ConcatAdapter子Adapter调用notifyItemRangeChanged无效问题咨询
ConcatAdapter中子Adapter调用notifyItemRangeChanged无效的原因
核心问题出在两个notify方法的设计意图完全不同:
notifyItemRangeChanged()的作用是通知RecyclerView已有位置的item数据发生了更新,它不会修改RecyclerView维护的item总数,只是刷新指定位置的内容。你追加10条数据后,子Adapter的item总数从10变成20,但这个方法不会告诉RecyclerView“总数变了”,所以RecyclerView完全不知道有新项需要显示,自然没有响应。notifyItemRangeInserted()是专门用于通知有新item插入,它会同步更新RecyclerView的item总数,同时触发布局逻辑去加载新增的项,因此能正常显示新数据。
结合ConcatAdapter的特性补充:
ConcatAdapter是将多个子Adapter的item合并为一个整体列表管理,它依赖每个子Adapter发出的item数量变更通知来更新整体的列表结构。当你调用notifyItemRangeChanged时,子Adapter没有告知ConcatAdapter自身的item总数已增加,ConcatAdapter维护的整体item计数还是原来的10,RecyclerView也就不会去渲染超出原计数范围的位置。
内容的提问来源于stack exchange,提问作者Charles Overflow
相关产品推荐
相关产品推荐

