日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Andriod --- JetPack (四):BaseObservable 与 ObservableField 双向绑定

發(fā)布時(shí)間:2025/3/21 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Andriod --- JetPack (四):BaseObservable 与 ObservableField 双向绑定 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.Andriod — JetPack (一):初識(shí) JetPack

2.Andriod — JetPack (二):LifeCycle 的誕生

3.Andriod — JetPack (三):ViewModel 的誕生

4.Andriod — JetPack (四):BaseObservable 與 ObservableField 雙向綁定

5.Andriod — JetPack (五):DataBinding + LiveData +ViewModel 簡(jiǎn)單實(shí)例

6.Andriod — JetPack (六):Room 增刪改查

7.Andriod — JetPack (七):Room + ViewModel + LiveData 增刪改查實(shí)例

一、什么叫單向綁定與雙向綁定

單向綁定:對(duì)象變化的時(shí)候 TextView 自動(dòng)更新
雙向綁定:對(duì)象變化的時(shí)候 EditView 自動(dòng)更新。EditText 變化的時(shí)候?qū)ο蟮闹狄舶l(fā)生變化。

二、BaseObservable 雙向綁定代碼實(shí)例

build.gradle

android {compileSdkVersion 29buildToolsVersion "30.0.3"dataBinding {enabled = true} }

MainActivity.java

import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import androidx.databinding.ViewDataBinding;import android.os.Bundle;import com.example.baseobservable.databinding.ActivityMainBinding;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);activityMainBinding.setUserViewModel(new UserViewModel());} }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"><data><variablename="userViewModel"type="com.example.baseobservable.UserViewModel" /></data><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><EditTextandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@={userViewModel.userName}"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout> </layout>

User.java

package com.example.baseobservable;public class User {public String userName;public User(String userName) {this.userName = userName;} }

UserViewModel.java

package com.example.baseobservable;import android.util.Log;import androidx.databinding.BaseObservable; import androidx.databinding.Bindable;// 并不是真正的 ViewModel public class UserViewModel extends BaseObservable {private User user;public UserViewModel() {this.user = new User("Jack");}/** 用 Bindable 進(jìn)行綁定* 只要對(duì)象發(fā)生變化 EditText 就會(huì)發(fā)生變化*/@Bindablepublic String getUserName() {return user.userName;}// EditText 中的內(nèi)容發(fā)生變化就會(huì)調(diào)用 setUserNamepublic void setUserName(String userName) {if(userName != null && !userName.equals(user.userName)) {user.userName = userName;Log.d("liang", userName);notifyPropertyChanged(BR.userName); // 通知屬性發(fā)生變化 , build 之后自動(dòng)生成}} }

結(jié)果:

三、ObservableField 雙向綁定代碼實(shí)例

需要修改的文件:
UserViewModel.java

package com.example.baseobservable;import android.util.Log;import androidx.databinding.BaseObservable; import androidx.databinding.Bindable; import androidx.databinding.ObservableField;// 并不是真正的 ViewModel public class UserViewModel {private ObservableField<User> userObservableField;public UserViewModel() {User user = new User("Jack");userObservableField = new ObservableField<>();userObservableField.set(user); // userObservableField 與 user 關(guān)聯(lián)起來}public String getUserName() {return userObservableField.get().userName;}public void setUserName(String userName) {Log.d("liang", userName);userObservableField.get().userName = userName;}}

總結(jié)

以上是生活随笔為你收集整理的Andriod --- JetPack (四):BaseObservable 与 ObservableField 双向绑定的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。