Android RecyclerView 加载4条数据 getItemCount返回4却仅显示单条目
RecyclerView仅展示单条列表项的排查路径
最常见触发原因
- 列表项布局尺寸配置错误
检查item_list.xml的根布局尺寸:如果根布局的android:layout_height被设置为match_parent,会导致每一个item都会撑满整个RecyclerView的可视高度,后续3条item全部被第一条的高度覆盖,视觉上仅能看到第一条内容。正确配置为:根布局layout_height设为wrap_content,layout_width保持match_parent即可。 - Adapter加载布局的参数错误
检查ListArticleAdapter中onCreateViewHolder方法的布局inflate逻辑:如果调用LayoutInflater.inflate()时错误传入attachToRoot = true,或者root参数传为null丢失了原布局的尺寸属性,会导致item根布局被强制拉伸为和RecyclerView同尺寸。正确的inflate写法:View inflateView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent, false);
其他需排查的方向
- 主页面布局的RecyclerView尺寸不匹配
检查activity_main.xml中RecyclerView的布局参数:如果RecyclerView自身的layout_height设为了wrap_content,搭配item布局的match_parent高度设置,会导致RecyclerView计算出的自身高度仅能容纳1条item的展示空间。这种场景下需要将RecyclerView的高度设为固定值或match_parent,预留足够的垂直展示空间。 - 业务代码中强制修改item尺寸
检查Adapter的onBindViewHolder方法是否存在逻辑:给item的根布局设置了固定LayoutParams,且高度值传入了RecyclerView本身的总高度,这种强制设置也会导致单条item占满全屏。
快速验证技巧:可以在代码中开启RecyclerView的调试绘制模式
recyclerView.setDebugDrawEnabled(true),系统会给每个item绘制差异化的彩色边框,如果所有item的边框完全重叠在同一区域,可直接确认是布局尺寸配置问题,无需反复校验数据传递逻辑。
内容的提问来源于stack exchange,提问作者Xose
相关产品推荐
相关产品推荐

