質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MVVM

MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

1948閲覧

AndroidのDataBindingで配列などを参照で変更するとき

atemu

総合スコア94

MVVM

MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2019/03/25 05:47

Android開発でMVVM実装を使っています。

通常、LiveDataで配列(List)などを持っているとき、その配列の一部の値を変更したい場合、
まず新しく配列を生成して、その配列の一部の値を変更して、その新しい配列をsetすると思います。

しかし、パフォーマンス的な要因で、毎回新しく配列を生成してsetすると言うのが難しい場合があります。
つまり、LiveDataが保持している配列自体を参照から変更したいということです。

変更すること自体はもちろん容易なのですが、その変更したと言うことをView側に反映させる方法がわかりません。
説明が抽象的であることは承知しています。申し訳ありません。
質問の意図がわかる方だけで結構ですので、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

LiveData(MutableLiveData)は setValue を呼ぶと、すでにセットされている値と同じであってもObserverへと通知します。
setValueで同じ配列を再度セットすれば更新が反映されるはずです。

kotlin

1// 初期値 2val list = mutableListOf("item1") 3val liveData = MutableLiveData(list) 4 5// 値を追加して通知 6list.add("item2") 7liveData.value = list

配列を別の変数に保持したくないのであれば、 getValue で現在の値を取得すれば良いでしょう。

kotlin

1// getValueで取得 (Nullableなことに注意) 2val list = liveData.value 3 4// 値を追加して通知 5list?.add("item2") 6liveData.value = list

投稿2019/03/25 09:56

編集2019/03/25 11:43
kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問