Kotlin 如何在更新ViewModel列表项属性时将RecyclerView中的属性设置为更新?

Kotlin 如何在更新ViewModel列表项属性时将RecyclerView中的属性设置为更新?,kotlin,android-recyclerview,android-livedata,Kotlin,Android Recyclerview,Android Livedata,我以这样的方式设置了我的项目:RecyclerView从ViewModel加载一个项目列表,然后显示它们。因此,ViewModel存储了一个LiveData>,RecyclerView会观察到它,并在它发生变化时进行更新 如果我想在列表中删除或添加一个元素,这一点很有效,但是如果我想更新列表元素的文本属性,该怎么办?由于这不被视为修改列表,因此不会触发观察者 基本上有一种方法可以解决这个问题。我在想,无论何时发生更改,都可以从ViewModel手动触发观察者,但这似乎与ViewModel的整个原

我以这样的方式设置了我的项目:RecyclerView从ViewModel加载一个项目列表,然后显示它们。因此,ViewModel存储了一个LiveData>,RecyclerView会观察到它,并在它发生变化时进行更新

如果我想在列表中删除或添加一个元素,这一点很有效,但是如果我想更新列表元素的文本属性,该怎么办?由于这不被视为修改列表,因此不会触发观察者

基本上有一种方法可以解决这个问题。我在想,无论何时发生更改,都可以从ViewModel手动触发观察者,但这似乎与ViewModel的整个原理背道而驰

一些基本的上下文代码

main fragment.kt:

mViewModel.allItems.observe(activity!!, Observer { newData ->
    adapter.data = newData
})
MainAdapter.kt:

var data = listOf<Item>()
    set(value) {
        field = value
        notifyDataSetChanged()
    }

尝试重置LiveData的值:

_allItems.postValue(_allItems.value)

更新列表中的项目后

是否尝试重置LiveData的值<代码>\u allItems.postValue(\u allItems.value)更新列表中执行此操作的项目后!我正在寻找一个能做到这一点的函数。我一定是在文档中漏掉了。太好了,我将作为答案发布。如果你能接受,我将不胜感激。
fun updateItem(arg : String) {
    for (item in _allItems.value!!) {
        if (item.text == arg) {
            item.text = "$arg: clicked!"
        }
    }
}
_allItems.postValue(_allItems.value)