NotifyDataSetChanged方法不会刷新我的RecyclerView Kotlin

时间:2019-10-03 12:25:40

标签: android kotlin android-recyclerview recycler-adapter

我正在尝试理解为什么适配器方法notifyDataSetChanged()无法刷新我的recyclerview。我在适配器这样的创建方法时找到了解决方案:

minikube config set vm-driver hyperv

此解决方案有效,但是,我想知道为什么我不能做这样的事情:

 fun setData(list: List<DownloadModel>){
    resumeList = list
    notifyDataSetChanged()
 }

downloadAdapter拥有列表downloadList的相同实例,我想知道为什么当我在活动中通知适配器时无法正常工作。

2 个答案:

答案 0 :(得分:5)

 downloadList = list

由于此行,不再是下载列表的参考

尝试

private fun observers() {
    downloadViewModel.getDownloadList().observe(this, Observer { list ->
      with(downloadList){
    clear()
    addAll(list)
}
        downloadList?.let {
            downloadAdapter.notifyDataSetChanged()
            }
        })
}

答案 1 :(得分:0)

您必须这样做:

val resumeList: MutableList<DownloadModel>

 fun setData(list: List<DownloadModel>){
    resumeList.clear()
    resumeList.addAll(list)
    notifyDataSetChanged()
 }

我可以同意上一个答复对您有用,但是它破坏了适配器保存的数据的封装。这就是为什么您首先遇到该错误的原因。

任何适配器的客户端都不能在没有任何保护的情况下直接修改其数据。