gpt4 book ai didi

android - NotifyDataSetChanged 方法不会刷新我的 RecyclerView Kotlin

转载 作者:行者123 更新时间:2023-12-02 21:14:00 25 4
gpt4 key购买 nike

我试图理解为什么适配器方法notifyDataSetChanged()不刷新我的回收 View 。我在适配器中创建方法时找到了一个解决方案,如下所示:

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

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

private lateinit var downloadAdapter: DownloadRecyclerAdapter

private fun setupAdapter() {
downloadAdapter = DownloadRecyclerAdapter(
this@DownloadActivity,
downloadList,
{ id -> onViewClick(id) },
{ id -> onEditClick(id) },
{ id, position -> onDeleteClick(id, position) }
)

savedResumeRv.apply {
layoutManager = LinearLayoutManager(context)
layoutAnimation = AnimationUtils.loadLayoutAnimation(
this@DownloadActivity,
R.anim.layout_animation_down_to_up
)
adapter = downloadAdapter

}
}

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

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

最佳答案

 downloadList = list

由于这一行,下载列表的引用不再相同

尝试

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

关于android - NotifyDataSetChanged 方法不会刷新我的 RecyclerView Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58219077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com