Kotlin涓嶮VVM鏋舵瀯鎬庝箞浣跨敤
Kotlin鏄竴绉嶅熀浜嶫VM鐨勯潤鎬佺被鍨嬬紪绋嬭瑷€锛岃€孧VVM鏄竴绉嶈蒋浠舵灦鏋勬ā寮忥紝鐢ㄤ簬灏嗙敤鎴风晫闈㈢殑閫昏緫鍜屾暟鎹垎绂诲紑鏉ャ€侹otlin涓嶮VVM鏋舵瀯鍙互寰堝ソ鍦扮粨鍚堝湪涓€璧凤紝浠ュ疄鐜版竻鏅扮殑浠g爜缁撴瀯鍜岃壇濂界殑鍙淮鎶ゆ€с€?/p>
鍦↘otlin涓娇鐢∕VVM鏋舵瀯鏃讹紝閫氬父浼氶伒寰互涓嬫楠わ細
- 鍒涘缓ViewModel锛歏iewModel鏄疢VVM鏋舵瀯涓殑涓€涓噸瑕佺粍浠讹紝鐢ㄤ簬绠$悊UI鐨勬暟鎹拰涓氬姟閫昏緫銆傚湪Kotlin涓紝鎮ㄥ彲浠ヤ娇鐢╒iewModel绫绘潵鍒涘缓ViewModel瀹炰緥锛屽苟鍦ㄥ叾涓畾涔夋暟鎹瓧娈靛拰鏂规硶銆?/li>
class MyViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String>
get() = _data
fun fetchData() {
// 浠庣綉缁滄垨鏁版嵁搴撹幏鍙栨暟鎹?/span>
_data.value = "Hello, MVVM!"
}
}
- 鍒涘缓View锛歏iew鏄敤鎴风晫闈㈢殑琛ㄧず锛岄€氬父鏄竴涓狝ctivity鎴朏ragment銆傚湪Kotlin涓紝鎮ㄥ彲浠ヤ娇鐢╔ML甯冨眬鏂囦欢鏉ュ畾涔夌晫闈㈢殑甯冨眬锛岀劧鍚庡湪Activity鎴朏ragment涓娇鐢╒iewModel鏉ョ鐞嗘暟鎹拰閫昏緫銆?/li>
class MyActivity : AppCompatActivity() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
viewModel.data.observe(this, Observer {
// 鏇存柊UI
textView.text = it
})
button.setOnClickListener {
viewModel.fetchData()
}
}
}
- 鏁版嵁缁戝畾锛氬湪MVVM鏋舵瀯涓紝鏁版嵁缁戝畾鏄竴涓噸瑕佺殑姒傚康锛岀敤浜庡皢ViewModel涓殑鏁版嵁鑷姩缁戝畾鍒癠I鍏冪礌涓娿€傚湪Kotlin涓紝鎮ㄥ彲浠ヤ娇鐢―ata Binding搴撴潵瀹炵幇鏁版嵁缁戝畾銆?/li>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="viewModel"
type="com.example.MyViewModel" />
</data>
<TextView
android:text="@{viewModel.data}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</layout>
缁间笂鎵€杩帮紝Kotlin涓嶮VVM鏋舵瀯鍙互寰堝ソ鍦扮粨鍚堝湪涓€璧凤紝甯姪鎮ㄦ瀯寤烘竻鏅般€佹槗缁存姢鐨凙ndroid搴旂敤绋嬪簭銆傞€氳繃ViewModel绠$悊鏁版嵁鍜屼笟鍔¢€昏緫锛岄€氳繃View澶勭悊鐢ㄦ埛鐣岄潰锛岄€氳繃鏁版嵁缁戝畾瀹炵幇鏁版嵁鑷姩鏇存柊锛屽彲浠ユ彁楂樺紑鍙戞晥鐜囧苟鎻愬崌鐢ㄦ埛浣撻獙銆?/p>
相关问答