我正在尝试更新 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 未使用最新值更新时
主要 Activity
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 正在更新
瓷砖编号
data class TileNumber(var number:Int,val row:Int,val column:Int) {
}
我试过这个链接引用但没有用
ListAdapter not updating item in RecyclerView
https://stackoverflow.com/a/50062174/6925888 (这不是一个好的解决方案)
DiffUtil ItemCallback areContentsTheSame() always returns true after updating an item on the ListAdapter
最佳答案
我认为你应该像这样初始化 tileNumberList 列表
var tileNumberList: LiveData<ArrayList<TileNumber>> = _tileNumberList
然后就像你正在做的那样在 MainActivity 中观察它
关于android - 更新 ArrayList 内容后,DiffUtil 不更新 ListAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60146582/