List 如何将元素添加到MutableLiveData内的列表中

List 如何将元素添加到MutableLiveData内的列表中,list,kotlin,android-livedata,mutablelivedata,List,Kotlin,Android Livedata,Mutablelivedata,.add()函数不起作用。我尝试在两个位置将列表更改为可变列表,但它给了我一个类型错误 class MainViewModel : ViewModel() { private val _shoes = MutableLiveData<List<Shoe>>(listOf( Shoe("Air Jordan", 6.0, "Nike", "Michael Jordan's Finest Shoe&q

.add()函数不起作用。我尝试在两个位置将列表更改为可变列表,但它给了我一个类型错误

class MainViewModel : ViewModel() {

    private val _shoes = MutableLiveData<List<Shoe>>(listOf(
        Shoe("Air Jordan", 6.0, "Nike", "Michael Jordan's Finest Shoe")
    ))

    val shoes: LiveData<List<Shoe>> = _shoes

    fun addShoe(shoe: Shoe){

    }

}
class MainViewModel:ViewModel(){
private val\u shoes=MutableLiveData(列表)(
鞋款(“Air Jordan”,6.0,“Nike”,“迈克尔·乔丹最出色的鞋款”)
))
val shoes:LiveData=\u shoes
趣味鞋(鞋:鞋){
}
}
更新:

尝试更改为可变列表,如果在后面使用.toMutableList()或将其转换为表达式,则只允许更改为可变列表而不会出现类型错误。例如

        private val _shoes = MutableLiveData<MutableList<Shoe>>(
        listOf(
            Shoe("Air Jordan", 6.0, "Nike", "Michael Jordan's Finest Shoe")
        ).toMutableList()
    )
private val\u=MutableLiveData(
列表(
鞋款(“Air Jordan”,6.0,“Nike”,“迈克尔·乔丹最出色的鞋款”)
).toMutableList()
)
或:

private val\u=MutableLiveData(
列表(
鞋款(“Air Jordan”,6.0,“Nike”,“迈克尔·乔丹最出色的鞋款”)
)作为可变列表?
)
这两个函数都不允许我仍然使用.add()函数。是。添加我想要使用的函数,还是我还缺少其他功能

编辑2:

已更新并转换为mutableListOf(),并显示了我使用的语法。LiveData应该在我所相信的另一个片段中的更改之后记录我观察到的更改

class MainViewModel : ViewModel() {

    private val _shoes = MutableLiveData<MutableList<Shoe>>(
        mutableListOf(
        Shoe("Air Jordan", 6.0, "Nike", "Michael Jordan's Finest Shoe")
    )
    )

    val shoes: LiveData<MutableList<Shoe>> = _shoes

    fun addShoe (shoe: Shoe){
        _shoes.add(shoe)
    }
}
class MainViewModel:ViewModel(){
private val\u shoes=MutableLiveData(
可变列表(
鞋款(“Air Jordan”,6.0,“Nike”,“迈克尔·乔丹最出色的鞋款”)
)
)
val shoes:LiveData=\u shoes
趣味鞋(鞋:鞋){
_鞋。添加(鞋)
}
}

列表
是只读的,不可直接更改。搜索
MutableList
MutableList
不会在这里给你一个类型错误,请随意发布该版本,这样我们就可以指出你的错误。更新了@HenryTwist,我也更新了另一个变量“shoes”来使用MutableList。使用
mutableListOf()
而不是
listOf())
这样您就不必使用
toMutableList()转换或强制转换它。您试图如何使用
add()
函数?它应该可以正常工作,所以您的语法一定是错误的。但是,LiveData不会自动注册更改,因为它不知道列表内容正在更改。使用只读列表和创建分配给LiveData的新列表更容易/更干净。@m0skit0如果使用它已经引用的同一实例调用
setValue
,它会注册为更改。
class MainViewModel : ViewModel() {

    private val _shoes = MutableLiveData<MutableList<Shoe>>(
        mutableListOf(
        Shoe("Air Jordan", 6.0, "Nike", "Michael Jordan's Finest Shoe")
    )
    )

    val shoes: LiveData<MutableList<Shoe>> = _shoes

    fun addShoe (shoe: Shoe){
        _shoes.add(shoe)
    }
}