You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android巴士订票应用上层甲板RecyclerView无法显示问题求助

解决巴士订票应用上层甲板RecyclerView不显示的问题

看起来你遇到的核心问题是切换到上层甲板选项时,对应的RecyclerView完全没有内容显示。我帮你梳理下代码里的几个关键疏漏点,以及具体的修复方案:

1. 核心问题分析

从你提供的代码片段来看,有两个关键问题导致上层RecyclerView无法正常显示:

  • 上层RecyclerView在onCreate中初始化不完整,仅设置了setNestedScrollingEnabled(false),但未绑定LayoutManager和Adapter;
  • RadioGroup的切换监听里,只处理了下层甲板的逻辑,完全没有编写上层甲板的case分支,导致点击上层选项时程序没有任何加载动作。

2. 具体修复步骤

步骤1:完善上层RecyclerView的初始化(在onCreate方法内)

在下层三个RecyclerView的配置代码之后,添加上层RecyclerView的初始化逻辑:

// 初始化上层RecyclerView的布局管理器与适配器
recyclerUpper.setLayoutManager(layoutManagerUpper);
seatAdapterUpper = new SeatSelectionSeatSleep3.SeatAdapterUpper(this, loadSeatListUpper());
recyclerUpper.setAdapter(seatAdapterUpper);

步骤2:补充RadioGroup切换到上层的处理逻辑

在radioGroup.setOnCheckedChangeListener的onCheckedChanged方法中,添加R.id.upperDeck的case分支:

switch (checkedId){
    case R.id.lowerDeck:
        // 保留你原有的下层处理代码
        recyclerLowerLeft.setLayoutManager(layoutManagerLowerLeft);
        recyclerLowerRight1.setLayoutManager(layoutManagerLowerRight1);
        recyclerLowerRight2.setLayoutManager(layoutManagerLowerRight2);
        seatAdapterLowerLeft = new SeatSelectionSeatSleep3.SeatAdapterLowerLeft(SeatSelectionSeatSleep3.this, loadSeatListLowerLeft());
        seatAdapterLowerRight1 = new SeatSelectionSeatSleep3.SeatAdapterLowerRight1(SeatSelectionSeatSleep3.this, loadSeatListLowerRight1());
        seatAdapterLowerRight2 = new SeatSelectionSeatSleep3.SeatAdapterLowerRight2(SeatSelectionSeatSleep3.this, loadSeatListLowerRight2());
        recyclerLowerLeft.setAdapter(seatAdapterLowerLeft);
        recyclerLowerRight1.setAdapter(seatAdapterLowerRight1);
        recyclerLowerRight2.setAdapter(seatAdapterLowerRight2);
        // 切换显示状态:显示下层,隐藏上层
        recyclerLowerLeft.setVisibility(View.VISIBLE);
        recyclerLowerRight1.setVisibility(View.VISIBLE);
        recyclerLowerRight2.setVisibility(View.VISIBLE);
        recyclerUpper.setVisibility(View.GONE);
        break;
    case R.id.upperDeck:
        // 配置上层RecyclerView
        recyclerUpper.setLayoutManager(layoutManagerUpper);
        seatAdapterUpper = new SeatSelectionSeatSleep3.SeatAdapterUpper(SeatSelectionSeatSleep3.this, loadSeatListUpper());
        recyclerUpper.setAdapter(seatAdapterUpper);
        // 切换显示状态:隐藏下层,显示上层
        recyclerLowerLeft.setVisibility(View.GONE);
        recyclerLowerRight1.setVisibility(View.GONE);
        recyclerLowerRight2.setVisibility(View.GONE);
        recyclerUpper.setVisibility(View.VISIBLE);
        break;
}

步骤3:确认上层座位数据加载方法的实现

确保你已经实现了loadSeatListUpper()方法,该方法需要返回上层甲板的座位数据列表,逻辑要和loadSeatListLowerLeft等下层数据加载方法保持一致,这样才能给上层Adapter提供有效的数据源。

另外,也要检查SeatAdapterUpper类的实现是否正确,确保它能像其他下层Adapter一样正确绑定座位数据和视图。

内容的提问来源于stack exchange,提问作者user9786296

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:44:50