java - DiffCallBack 没有被调用?
问题描述
所以,我有一个ListAdapter,我每次都使用adapter.submitList()在我的适配器中传递新列表,但奇怪的是它只第一次提交列表,下一次它只是不显示里面的项目适配器这是我提交列表的方式
private fun insertListToRv() {
val mName = editText_checkbox.text.toString()
val isChecked = false
if (mName == "") {
Toast.makeText(requireContext(), "Please fill out all fields.", Toast.LENGTH_SHORT)
.show()
} else {
val newListData = TaskList(
mName,
isChecked,
0,
mNoteId
)
itemList.add(newListData)
adapter.submitList(itemList)
Log.d("TAG2","Current List: ${adapter.currentList}")
counter++
editText_checkbox.setText("")
}
}
这里,itemList 是一个全局变量,初始化为 ArrayList()
var itemList: MutableList<TaskList> = ArrayList()
我什至在我的 DiffCallBack 中放置了一些日志语句,在这种情况下它只被调用一次,之后它根本不会被调用。这是我的 DiffCallBack 类
class DiffCallBack(
) : DiffUtil.ItemCallback<TaskList>() {
override fun areItemsTheSame(oldItem: TaskList, newItem: TaskList): Boolean {
Log.d("TAG3","Inside")
return oldItem.Taskid == newItem.Taskid
}
override fun areContentsTheSame(oldItem: TaskList, newItem: TaskList): Boolean {
Log.d("TAG3","Inside")
return oldItem == newItem
}
}
我还调试了我的代码,并注意到我的 adapter.currentList 正在更新。这个实现可能有什么问题?
解决方案
看来问题可能会重复使用相同的列表
val newListData = TaskList(
mName,
isChecked,
0,
mNoteId
)
val adapterList = itemList + newListData
adapter.submitList(adapterList)
推荐阅读
- mysql - 如何根据您拥有的票数随机选择一行
- javascript - 如何在 webpack scss 中解析 css url(image)?
- python - 过滤昨天、上周和上个月的帖子不起作用
- javascript - 如何在 React hooks 的 setState() 函数中绑定参数?
- javascript - 生活大爆炸理论挑战
- linux - systemd After=nginx.service 不工作
- python - 子文件夹上的 Python 导入
- sql - SQL 根据其中一行中的值更新多行
- system-verilog - 如何在系统verliog中对数组接口进行切片
- ruby-on-rails - Rails 路由到 Page not found 而不是 404 错误