簡體   English   中英

將項目添加到索引為零的可變列表不會更新 recyclerview

[英]Adding an item to a mutable list at index zero doesnt update the recyclerview

我在一個片段中有一個 recyclerview,它顯示一個可變的任務列表,每個任務都有一個標題和描述,包裝在可變的實時數據中。

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

為了添加這些項目,我實現了一個底部工作表對話框片段,其中包含兩個值的文本編輯。

當我在未指定索引的情況下添加任務項時,recyclerview 會正確更新:

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

但是,當我指定我想要索引 0 處的新任務項並添加多個任務項時,recyclerview會一遍又一遍地顯示我添加的第一個任務。

我嘗試過的事情:

在適配器內使用 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()
        }
    }
}

在視圖模型中添加任務 function:

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)
    }
}

在此先感謝,我希望您的專業人士可以幫助我

viewModel.tasks.observe(viewLifecycleOwner, Observer {
            adapter.notifyDataSetChanged()
        })

試試看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM