Baserecyclerviewadapterhelper: 创建适配器对象时,如果直接传入一个空的集合,然后向这个集合添加数据,之后notifydatasetchange没用

Created on 13 Dec 2017  ·  6Comments  ·  Source: CymChad/BaseRecyclerViewAdapterHelper

用的是 BaseQuickAdapter;版本号: compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'

All 6 comments

我已经发现可以先用不带数据集的构造方法,再通过setnewdata()这种方式解决。我觉得作者应该出一份详细点的文档,讲清楚各种情况的用法,真的。

还发现用setnewdata这种方式使用notifydatasetchange第一次会不显示,必须重新加载数据再刷新一次

我也是遇到了同样的问题,后来看了一下,第一次传入空集合,构造方法调用super()的时候,super.mData就被赋值为null了,接下来notifydatasetchannge的时候调用父类的getItemCount的时候返回为null,因此adapter即使notify了,也不会去调用onBindViewHolder方法,就不会执行后面的convert(),所以你在notify之前应该将新的数据赋值给super.mData!

@justdoITlkq
optometristsRvAdapter.setNewData(optometryerList);
optometristsRvAdapter.notifyDataSetChanged();
像这样吗?这样有个问题就是第一次进来不显示,重新加载一次才出现

直接传入一个空的集合内部会重新new一个,你可以通过setNewData或者getdata拿到adapter的数据源对其操作。setNewData里面就有notifyDataSetChanged操作不用自己再次notifyDataSetChanged

@CymChad 好的

Was this page helpful?
0 / 5 - 0 ratings