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

Android RecyclerView仅显示单个CardView问题求助(附代码)

解决RecyclerView只显示单个CardView的问题

嘿,我来帮你搞定这个问题!你说你的dishItemsList明明有3个条目,但RecyclerView只显示一个CardView,我看了你的Adapter代码,先给你梳理几个最可能的原因和对应的解决办法:

1. 别忘了给RecyclerView设置LayoutManager

这是新手最容易漏掉的关键步骤!如果你的RecyclerView没有设置LayoutManager,它根本不知道该怎么排列item,大概率只会显示第一个条目。你需要在初始化RecyclerView的地方(Activity或Fragment里)加上这段代码:

RecyclerView recyclerView = findViewById(R.id.your_recycler_view_id);
// 用LinearLayoutManager实现垂直列表,你也可以换成GridLayoutManager等
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(yourMyAdapterInstance);

2. 检查item布局dish_list_row.xml的高度设置

打开你的item布局文件,看看CardView的layout_height是不是设成了match_parent?如果是这样,第一个CardView会直接占满整个RecyclerView的高度,后面的item自然就被挤得看不到了。把它改成wrap_content就好:

<androidx.cardview.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dishListCardView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" <!-- 这里改成wrap_content -->
    <!-- 其他属性... -->
    >
    <!-- 内部控件... -->
</androidx.cardview.widget.CardView>

3. 确认getItemCount()确实返回了3

虽然你说列表有3个条目,但最好加个日志验证一下,避免列表传递过程中出问题:

@Override
public int getItemCount(){
    int itemCount = dishItemsList != null ? dishItemsList.size() : 0;
    Log.d("MyAdapterDebug", "当前条目数量:" + itemCount);
    return itemCount;
}

运行后看Logcat里的输出,确认是不是真的返回了3。如果返回1,那就是你的dishItemsList在传递给Adapter的时候出了问题,得检查列表初始化和传递的逻辑。

4. 排查RecyclerView本身的布局约束

看看RecyclerView在父布局里的设置,比如是不是高度被设成了固定值,刚好只能放下一个item?或者父布局的约束导致RecyclerView没有足够的空间显示更多条目。确保RecyclerView的layout_height是match_parent或者足够大的wrap_content,让它有空间展示所有item。

先按这几步排查,大概率能解决问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:46:58