美文网首页
RecyclerView数据不刷新问题

RecyclerView数据不刷新问题

作者: 初见soulmate | 来源:发表于2018-11-19 16:55 被阅读0次

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

    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之后需要在原地址数据上更新数据。

    相关文章

      网友评论

          本文标题:RecyclerView数据不刷新问题

          本文链接:https://www.haomeiwen.com/subject/hxeafqtx.html