問題タブ [android-viewmodel]

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 に答える
3897 参照

android - Transformation からのデータ バインディング LiveData - Android Kotlin

私はkotlinとandroidアーキテクチャのコンポーネントを学んでいます。Googleマップのマップトグルボタンの簡単な使用例があります。

データ バインディングを使用して、マップのトグル ボタン ラベルを ViewModel の MutableLiveData フィールドにバインドしたいと考えています。

アクティビティの onCreate メソッドから MapViewModel に mapType val を設定します。私が正しく理解していれば、Transformations.map の使用により mapLabel val が変更されるはずです。

機能していません...なぜですか?

これが私のバージョンです:

  • Android スタジオ 3.2 カナリア 4
  • kotlin_version = '1.2.21'
  • サポート = "27.1.0"
  • arch_core = "1.1.0"
  • データバインディング = "3.2.0-alpha04"

MapViewModel.kt

activity_maps.xml

MapsActivity.kt

アクティビティに文字列を設定する MutableLiveData オブジェクトを使用してバインディングをテストしましたが、正常に動作します。問題は Transformations.map にあるようです - 私はそれを間違って理解しましたか?

また、デバッグ中に、ViewModel の mapType val にオブザーバーがないことがわかります (これが正しいか間違っているかはわかりませんが、興味深いだけです)。