扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

Kotlin涓嶮VVM鏋舵瀯鎬庝箞浣跨敤

扬州沐宇科技
2024-05-06 18:40:57
kotlin, mvvm

Kotlin鏄竴绉嶅熀浜嶫VM鐨勯潤鎬佺被鍨嬬紪绋嬭瑷€锛岃€孧VVM鏄竴绉嶈蒋浠舵灦鏋勬ā寮忥紝鐢ㄤ簬灏嗙敤鎴风晫闈㈢殑閫昏緫鍜屾暟鎹垎绂诲紑鏉ャ€侹otlin涓嶮VVM鏋舵瀯鍙互寰堝ソ鍦扮粨鍚堝湪涓€璧凤紝浠ュ疄鐜版竻鏅扮殑浠g爜缁撴瀯鍜岃壇濂界殑鍙淮鎶ゆ€с€?/p>

鍦↘otlin涓娇鐢∕VVM鏋舵瀯鏃讹紝閫氬父浼氶伒寰互涓嬫楠わ細

  1. 鍒涘缓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!"
    }
}
  1. 鍒涘缓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()
        }
    }
}
  1. 鏁版嵁缁戝畾锛氬湪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>

扫码添加客服微信