扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

Android mvvm妗嗘灦鎬庝箞浣跨敤

扬州沐宇科技
2023-12-26 14:52:11
android, mvvm

Android MVVM锛圡odel-View-ViewModel锛夋鏋剁敤浜庡皢搴旂敤绋嬪簭鐨勪笟鍔¢€昏緫涓庣晫闈㈤€昏緫鍒嗙锛屼娇寰椾唬鐮佹洿鏄撲簬缁存姢鍜屾祴璇曘€備互涓嬫槸浣跨敤Android MVVM妗嗘灦鐨勫熀鏈楠わ細

  1. 娣诲姞渚濊禆锛氬湪浣犵殑椤圭洰鐨刡uild.gradle鏂囦欢涓坊鍔燰iewModel鍜孡iveData鐨勪緷璧栭」銆?/li>
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
  1. 鍒涘缓ViewModel绫伙細鍒涘缓涓€涓户鎵胯嚜ViewModel鐨勭被锛岃绫荤敤浜庡瓨鍌ㄥ簲鐢ㄧ▼搴忕殑涓氬姟閫昏緫鍜屾暟鎹姸鎬併€?/li>
class MyViewModel : ViewModel() {
    // 鍦ㄦ瀹氫箟鏁版嵁鍜屼笟鍔¢€昏緫
}
  1. 鍦ˋctivity鎴朏ragment涓幏鍙朧iewModel瀹炰緥锛氫娇鐢╒iewModelProvider鏉ヨ幏鍙朧iewModel鐨勫疄渚嬶紝纭繚鍦╒iewModel鐨勭敓鍛藉懆鏈熻寖鍥村唴浣跨敤鍚屼竴涓疄渚嬨€?/li>
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
  1. 瑙傚療LiveData锛氬湪ViewModel涓娇鐢↙iveData鏉ュ瓨鍌ㄥ拰绠$悊鏁版嵁锛屽苟鍦ˋctivity鎴朏ragment涓瀵烲iveData鐨勫彉鍖栥€?/li>
val data: LiveData<String> = MutableLiveData() // 鍦╒iewModel涓畾涔塋iveData鍙橀噺
data.observe(this, Observer { value ->
    // 鍦ˋctivity鎴朏ragment涓瀵烲iveData鐨勫彉鍖?/span>
    // 澶勭悊UI鏇存柊鎴栧叾浠栭€昏緫
})
  1. 鏇存柊鏁版嵁锛氶€氳繃鏇存柊ViewModel涓殑鏁版嵁鏉ヨЕ鍙慙iveData鐨勫彉鍖栵紝杩涜€屾洿鏂癠I銆?/li>
data.value = "Hello, World!" // 鏇存柊LiveData鐨勫€?/span>
  1. 鏁版嵁缁戝畾锛氫娇鐢ㄦ暟鎹粦瀹氬簱锛堜緥濡侫ndroid Data Binding鎴朖etpack Compose锛夊皢ViewModel涓殑鏁版嵁缁戝畾鍒板竷灞€鏂囦欢涓殑瑙嗗浘銆?/li>
<TextView
    android:text="@{viewModel.data}"
    ... />

閫氳繃浠ヤ笂姝ラ锛屼綘灏卞彲浠ュ紑濮嬩娇鐢ˋndroid MVVM妗嗘灦鏉ユ瀯寤哄簲鐢ㄧ▼搴忎簡銆傝娉ㄦ剰锛岃繖鍙槸涓€涓畝鍗曠殑绀轰緥锛屽疄闄呯殑搴旂敤涓彲鑳戒細娑夊強鏇村鐨勭粍浠跺拰妗嗘灦銆?/p>

扫码添加客服微信