【debug-layout】RecyclerView嵌套ListView后ListView只显示第一个item

当RecyclerView嵌套ListView时,ListView可能只显示第一个item。原因是多层滑动列表导致高度计算错误。解决办法包括在Adapter内部调整子列表高度或自定义ListView重写onMeasure()方法。然而,如果外层再添加ScrollView,可能导致RecyclerView显示不全,这个问题尚未找到解决方案。
摘要由CSDN通过智能技术生成

描述

RecyclerView嵌套ListView后ListView只显示第一个item

原因

原因大概是多个滑动列表嵌套,导致比较早期的列表不知道自己有多高了

解决方案

可以通过重新测量子列表的高度来解决,具体的实现代码有两种可供参考:

方案一:在Adapter内部用一个函数解决
参考:https://blog.csdn.net/lch1251680944/article/details/52275654

// ListView的普通适用(此处笔者使用的是ArrayAdapter,也可以用其他的比如SimpleAdapter或自定义Adapter)
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(mContext, android.R.layout.simple_list_item_1, arrData);        // 构建适配器
holder.listview.setAdapter(arrayAdapter);        // 设置适配器

// 目标代码
setListViewHeightBasedOnChildren(holder.listview);

...
...
...

// 目标代码具体实现
public static void setListViewHeightBasedOnChildren(ListView listView) {
        // 获取ListView对应的Adapter
        ListAdapter listAdapter = listView.getAdapter();
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值