首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在索引0处向可变列表中添加项目不会更新回收视图

在索引0处向可变列表中添加项目不会更新回收视图
EN

Stack Overflow用户
提问于 2022-01-16 02:31:56
回答 1查看 415关注 0票数 1

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

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

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

当我在没有指定索引的情况下添加任务项时,回收视图将正确更新:

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

但是,当我指定要在索引0处添加新任务项并添加多个任务项时,回收视图显示我多次添加的第一个任务。

我尝试过的事情:

在适配器中使用notifyDataSetChanged可以正确地工作和更新回收视图,但是我尝试将它添加到我的底部工作表对话框中的add任务按钮中,但是它什么也不做。

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

以下是相关档案:

AddTaskFragment (底片对话框):

代码语言:javascript
运行
AI代码解释
复制
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()
        }
    }
}

视图模型中的addTask函数:

代码语言:javascript
运行
AI代码解释
复制
fun addTask(taskEditText : String, descriptionEditText : String) {
    _tasks.value!!.add(0,Task(taskEditText,descriptionEditText))
}

适配器:

代码语言:javascript
运行
AI代码解释
复制
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)
    }
}

提前谢谢,我希望你们的专业人士能帮我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-16 04:03:08

代码语言:javascript
运行
AI代码解释
复制
viewModel.tasks.observe(viewLifecycleOwner, Observer {
            adapter.notifyDataSetChanged()
        })

试试看。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70729218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档