問題タブ [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.
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を返しませんusers
users.getValue()
android - ビューモデルのインスタンスを作成できません
こんにちは、Android で MVVM を初めて使用し、livedata を使用しています。ビューモデルのインスタンスを作成しようとしています。問題は、リポジトリをビューモデル コンストラクターに渡していないことだと思います。ビューモデルのインスタンスを作成できません。ここでこれを行う方法がわかりませんが、私のビューモデルとその作成です。