【发布时间】:2020-02-10 08:29:10
【问题描述】:
我正在尝试更新 MutableLiveData 中的 ArrayList。 每当我更改 ArrayList 中的内容时,ListAdapter 都不会更新。
视图模型
private var _tileNumberList:MutableLiveData<ArrayList<TileNumber>> = MutableLiveData()
var tempTileNumberList: ArrayList<TileNumber> = ArrayList()
val tileNumberList:LiveData<ArrayList<TileNumber>>
get() = _tileNumberList
init {
for (i in 1..9){
for (j in 1..9){
//tileNumberList.add(TileNumber(0,i,j))
tempTileNumberList.add(TileNumber(0,i,j))
}
}
fun onStart() {
tempTileNumberList[count].number = 8
_tileNumberList.value = tempTileNumberList
count++
}
每当我调用 onStart 方法时,列表值发生变化,但 ListAdapter 没有更新为最新值
MainActivity
backTrackingViewModel.tileNumberList.observe(this, Observer {
it?.let {
//adapter.submitList(null)
adapter.submitList( it)
}
Toast.makeText(
applicationContext,
"Hey",
Toast.LENGTH_SHORT
).show()
})
当我设置 adapter.submitList(null) 然后我的 ListAdapter 正在更新
TileNumber
data class TileNumber(var number:Int,val row:Int,val column:Int) {
}
我试过这个链接引用但没有用
ListAdapter not updating item in RecyclerView
https://stackoverflow.com/a/50062174/6925888(这不是一个好的解决方案)
【问题讨论】:
-
请添加属性tileNumberList的描述。
-
@mike 检查我也更新了问题和代码。
-
根据链接的问题“因此,如果您将相同的列表传递给适配器,它甚至不会调用 DiffUtil”。你检查了吗?
-
那么,你有 Toast 通知吗?
-
@sanjeev 是的,我通过了相同的列表并调用了 DiffUtil。
标签: android kotlin android-mvvm