android viewmodel鎬庝箞浣跨敤
Android ViewModel 鏄竴涓璁℃ā寮忥紝鐢ㄤ簬绠$悊鍜屼繚瀛樹笌 UI 鐩稿叧鐨勬暟鎹€傚畠鐨勪富瑕佺洰鐨勬槸鍦ㄩ厤缃洿鏀癸紙濡傛棆杞睆骞曪級鎴栧簲鐢ㄧ▼搴忚繘鍏ュ悗鍙板苟閲嶆柊鍚姩鏃朵繚鎸佹暟鎹殑涓€鑷存€с€?/p>
瑕佷娇鐢?Android ViewModel锛屾偍闇€瑕侀伒寰互涓嬫楠わ細
- 娣诲姞 ViewModel 鏀寔搴撲緷璧栭」鍒版偍鐨勬ā鍧楃骇 build.gradle 鏂囦欢涓細
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
- 鍒涘缓涓€涓户鎵?ViewModel 鐨勭被锛岃绫诲皢淇濆瓨鎮ㄧ殑 UI 鐩稿叧鏁版嵁銆備緥濡傦細
import androidx.lifecycle.ViewModel
class MyViewModel : ViewModel() {
// 淇濆瓨鎮ㄧ殑 UI 鐩稿叧鏁版嵁鐨勬垚鍛樺彉閲?/span>
}
- 鍦ㄦ偍鐨?Activity 鎴?Fragment 涓幏鍙?ViewModel 鐨勫疄渚嬶細
import androidx.lifecycle.ViewModelProvider
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
鍦ㄨ繖閲岋紝this
鏄偍鐨?Activity 鎴?Fragment 瀹炰緥锛?code>MyViewModel 鏄偍鍒涘缓鐨?ViewModel 绫汇€?/p>
- 鐜板湪锛屾偍鍙互鍦ㄦ偍鐨?UI 缁勪欢涓娇鐢?ViewModel 涓殑鏁版嵁銆備緥濡傦紝鍦?Activity 涓紝鎮ㄥ彲浠ヤ娇鐢ㄤ互涓嬫柟寮忚缃枃鏈鍥剧殑鏂囨湰锛?/li>
textView.text = viewModel.myData
鍦ㄨ繖閲岋紝myData
鏄?MyViewModel 涓殑涓€涓垚鍛樺彉閲忋€?/p>
- 褰撴偍鐨?Activity 鎴?Fragment 閿€姣佹椂锛孷iewModel 鐨勫疄渚嬩粛鐒跺瓨鍦紝浠ヤ究鍦ㄤ笅涓€娆″垱寤烘椂鎭㈠鏁版嵁銆?/li>
璇锋敞鎰忥紝鎮ㄥ彲浠ュ湪 ViewModel 涓娇鐢?LiveData 鏉ヨ瀵熷拰鍝嶅簲鏁版嵁鐨勬洿鏀广€傝繖鏍凤紝鎮ㄧ殑 UI 缁勪欢鍙互鏍规嵁鏁版嵁鐨勬洿鏂拌嚜鍔ㄦ洿鏂般€傛湁鍏?LiveData 鐨勬洿澶氫俊鎭紝璇峰弬闃匧iveData 鏂囨。銆?/p>
杩欏氨鏄娇鐢?Android ViewModel 鐨勫熀鏈楠ゃ€傛偍鍙互鏍规嵁鎮ㄧ殑闇€姹傝繘涓€姝ュ畾鍒跺拰鎵╁睍 ViewModel銆?/p>
相关问答