因此,我有一个ListAdapter,并且每次都使用adapter.submitList()在适配器内部传递新列表,但奇怪的是,它仅是第一次提交该列表,而下次它只是不显示该项目适配器
这是我提交 list 的方式

 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正在更新。
此实现可能有什么问题?

最佳答案

看来问题可能会重用相同的 list

val newListData = TaskList(
                mName,
                isChecked,
                0,
                mNoteId
            )
       val adapterList = itemList + newListData
       adapter.submitList(adapterList)

关于java - DiffCallBack不被调用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/65630836/

10-11 21:03