【问题标题】:Adding an item to a mutable list at index zero doesnt update the recyclerview将项目添加到索引为零的可变列表不会更新 recyclerview
【发布时间】:2022-01-16 10:31:56
【问题描述】:

我在一个片段中有一个 recyclerview,它显示一个可变的任务列表,每个任务都有一个标题和描述,包装在可变的实时数据中。

private val _tasks = MutableLiveData<MutableList<Task>>()

为了添加这些项目,我实现了一个底部工作表对话框片段,其中包含两个值的文本编辑。

当我在未指定索引的情况下添加任务项时,recyclerview 会正确更新:

_tasks.value!!.add(Task(taskEditText,descriptionEditText))

但是,当我指定我想要索引 0 处的新任务项并添加多个任务项时,recyclerview displays the first task i added over and over.

我尝试过的事情:

在适配器中使用 notifyDataSetChanged 可以正常工作并正确更新 recyclerview,但是我尝试将其添加到底部工作表对话框中的添加任务按钮中,但它什么也没做。

我尝试将项目添加到临时列表,然后将其设置为 _tasks.value 但同样的事情发生了,只有在我不指定索引时才会更新。

以下是相关文件:

AddTaskFragment(底页对话框):

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    binding.lifecycleOwner = viewLifecycleOwner
    // if the textfields are not empty, adds the task and leaves the dialog
    binding.buttonAdd.setOnClickListener{
        if (binding.addTaskEditText.text!!.isNotEmpty() && binding.addDescriptionEditText.text!!.isNotEmpty()) {
            viewModel.addTask(binding.addTaskEditText.text.toString(), binding.addDescriptionEditText.text.toString())
            dismiss()
        }
    }
}

viewmodel 中的 addTask 函数:

fun addTask(taskEditText : String, descriptionEditText : String) {
    _tasks.value!!.add(0,Task(taskEditText,descriptionEditText))
}

适配器:

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val task = viewModel.tasks.value!![position]
    holder.itemTitle.text = task.text
    holder.itemDescription.text = task.description
    holder.textViewOptions.setOnClickListener {
        onMenuClick(position, holder, task)
    }
}

在此先感谢,我希望你的专业人士可以帮助我

【问题讨论】:

    标签: android kotlin android-recyclerview android-livedata mutablelist


    【解决方案1】:
    viewModel.tasks.observe(viewLifecycleOwner, Observer {
                adapter.notifyDataSetChanged()
            })
    

    试试看。

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      相关资源
      最近更新 更多