問題タブ [android-mvvm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2765 参照

android - MVVM LiveData と DataBinding

私はアーキテクチャ コンポーネントに取り組んでおり、現在は LiveData とデータ バインディングを学んでいます。整数値のレイアウトで LiveData をバインドできますが、ユーザーのリストを見つけることができません。

これは、データ バインディングを使用した LiveData の実例です。

ViewModel クラスとアクティビティ

上記の例では、データとのデータ バインディングは正常に機能します。カウンターの更新ですが、ドキュメントの状態とは異なり、アプリが停止している間または LiveData の場合はカウントを停止しません

注: LiveData オブジェクトは、アクティビティまたは LifecycleOwner がアクティブな場合にのみ更新を送信します。別のアプリに移動すると、戻るまでログ メッセージが一時停止します。LiveData オブジェクトは、それぞれのライフサイクル所有者が STARTED または RESUMED のいずれかである場合にのみ、サブスクリプションをアクティブと見なします。

私の本当の質問は、LiveData<List<User>>クラスでデータバインディングを実装する方法です。

android:text="@{viewModel.getUserRecords()は、開始時にユーザー データを文字列としてバインドしますが、新しいユーザーが追加されたとき、またはデバイスが回転しない限り、リストがシャッフルされたときに更新されません。

アクティビティ

EDIT: Blackbeltの回答の後にMyViewModelクラスを編集しました今、私は Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.arch.lifecycle.LiveData.observeForever(android.arch.lifecycle.Observer)' on a null object reference System.out.println()内部に入っapply()ていますが呼び出されていません.他の2つは呼び出され、null返しませんusersusers.getValue()

0 投票する
2 に答える
2190 参照

android - ビューモデルのインスタンスを作成できません

こんにちは、Android で MVVM を初めて使用し、livedata を使用しています。ビューモデルのインスタンスを作成しようとしています。問題は、リポジトリをビューモデル コンストラクターに渡していないことだと思います。ビューモデルのインスタンスを作成できません。ここでこれを行う方法がわかりませんが、私のビューモデルとその作成です。