![](/img/trans.png)
[英]How to update RecyclerView Adapter Data while adding new item in List
[英]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.