質問: Android開発でMVVM実装を使っています。 通常、LiveDataで配列(List)などを持っているとき、その配列の一部の値を変更したい場合、 まず新しく配列を生成して、その配列の一部の値を変更して、その新しい配列をsetすると思います。 しかし、パフォーマンス的な要因で、毎回新しく配列を生成してsetすると言うのが難しい場合があります。 つまり、LiveDataが保持している配列自体を参照から変更したいということです。 変更すること自体はもちろん容易なのですが、その変更したと言うことをView側に反映させる方法がわかりません。 説明が抽象的であることは承知しています。申し訳ありません。 質問の意図がわかる方だけで結構ですので、よろしくお願いします。
回答: LiveData(MutableLiveData)は setValue) を呼ぶと、すでにセットされている値と同じであってもObserverへと通知します。 setValueで同じ配列を再度セットすれば更新が反映されるはずです。 ``` // 初期値 val list = mutableListOf("item1") val liveData = MutableLiveData(list) // 値を追加して通知 list.add("item2") liveData.value = list ``` 配列を別の変数に保持したくないのであれば、 getValue) で現在の値を取得すれば良いでしょう。 ``` // getValueで取得 (Nullableなことに注意) val list = liveData.value // 値を追加して通知 list?.add("item2") liveData.value = list ```