RecyclerView数据不刷新问题

2018-11-19  本文已影响0人  初见soulmate

相关问题如下:
问题代码如下:

WorkAchievementAdapter adapter = new WorkAchievementAdapter(item.getWorkResultsPic(), mContext);
            RecyclerView rvWorkAchievement = helper.getView(R.id.rv_work_achievement);
            rvWorkAchievement.setAdapter(adapter);
            adapter.notifyDataSetChanged();

代码看着没什么问题,但是数据就是不刷新,即使调用了adapter.notifyDataSetChanged();也没有作用。

问题出现原因:
RecyclerView跟ListView不一样,当我们想要更新数据的时候,有两种情况:
dataList = createDataList(5); //这是错误的做法,dataList为初始传入的List
dataList.addAll(createDataList(5)); //这是正确的做法
我们想要更新数据的时候,请记住这句话
“whenever adding or removing elements, always make changes to the existing list”
也就是说,请在原数据集上更新你的数据,而不是用一个新的数据集替代,记得最后要 mAdapter.notifyDataSetChanged()一下哟。

结论: 改变数据源的时候,一定要改变adapter真正的数据源:

所以修改之后的代码如下:

WorkAchievementAdapter adapter = new WorkAchievementAdapter(item.getWorkResultsPic(), mContext);
            RecyclerView rvWorkAchievement = helper.getView(R.id.rv_work_achievement);
            rvWorkAchievement.setAdapter(adapter);
            adapter.setNewData(item.getWorkResultsPic());
            adapter.notifyDataSetChanged();

在设置adapter之后需要在原地址数据上更新数据。

上一篇下一篇

猜你喜欢

热点阅读