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

如何在Activity内嵌ViewPager2的Fragment中加载单行布局展示滚动列表

问题汇总

  1. Activity中适配器实例化类名错误:你定义的ViewPager2适配器类名为VPgrFragAdapter,但Activity代码中实例化的是不存在的PgrFrgrankAdapter,导致Fragment根本没有正常挂载到ViewPager2上。
  2. FragmentTwo根布局高度错误:Fragment的根布局设置为wrap_content,在ViewPager2中会导致高度无法撑开,布局不可见。
  3. RecyclerView适配器getItemCount返回值错误:你直接返回了0,RecyclerView会判定没有条目需要渲染,自然不会加载单行布局。
  4. 数据源为空且没有绑定控件:Fragment中初始化的rankarraylist没有添加测试数据,同时适配器的ViewHolder没有绑定布局中的TextView控件,onBindViewHolder也没有做赋值逻辑。
  5. 布局语法错误:FragmentTwo的XML布局最后缺少</androidx.constraintlayout.widget.ConstraintLayout>闭合标签,会导致编译错误。

对应修复方案

1. 修复Activity中适配器实例化代码

把Activity中适配器初始化的代码替换为:

VPgrFragAdapter frgrankAdapter = new VPgrFragAdapter(fm, getLifecycle());
pager2.setAdapter(frgrankAdapter);

2. 修复FragmentTwo根布局高度

修改FragmentTwo的XML根布局属性,同时补全闭合标签:

<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    <!-- 把wrap_content改成match_parent -->
    android:layout_height="match_parent"
    android:background="@color/backgMainPg3dark"
    tools:context=".VpgFgtwo">

末尾补全</androidx.constraintlayout.widget.ConstraintLayout>。

3. 修复RecyclerView适配器的getItemCount

修改FG2Pgr2adapter中的getItemCount方法:

@Override
public int getItemCount() {
    return rankarraylist.size();
}

4. 给ViewHolder绑定控件,补充赋值逻辑

修改FG2Pgr2adapter的Hold类和onBindViewHolder方法:

class Hold extends RecyclerView.ViewHolder {
    TextView positionTv;
    TextView prizemoneyTv;

    public Hold(@NonNull View itemView) {
        super(itemView);
        // 绑定布局中的控件
        positionTv = itemView.findViewById(R.id.position);
        prizemoneyTv = itemView.findViewById(R.id.prizemoney);
    }
}

@Override
public void onBindViewHolder(@NonNull FG2Pgr2adapter.Hold holder, int position) {
    RankModelClass rankModelClass = rankarraylist.get(position);
    holder.positionTv.setText("#" + rankModelClass.getRankposition());
    holder.prizemoneyTv.setText(String.valueOf(rankModelClass.getPrizewin()));
}

5. 给Fragment添加测试数据

在VpgFgtwo的onCreateView方法中,适配器初始化完成后添加测试数据验证:

// 设置适配器之后添加测试数据
for (int i = 1; i <= 20; i++) {
    rankarraylist.add(new RankModelClass(i, i * 100.5));
}
// 通知适配器数据更新
fg2Pgr2adapter.notifyDataSetChanged();

做完以上修改即可正常显示预期的垂直滚动列表效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:09:03