溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android怎么綁定數據

發(fā)布時間:2022-03-30 09:50:36 來源:億速云 閱讀:231 作者:iii 欄目:移動開發(fā)

今天小編給大家分享一下Android怎么綁定數據的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

1. 基本結構

1.1 JavaBeans對象

public class User { private final String firstName; public User(String firstName) { this.firstName = firstName; } public String getFirstName() { return this.firstName; } }

1.2 布局文件

<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="user" type="com.example.User"/> </data> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.firstName}"/> </LinearLayout> </layout>

1.3 Activity

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity); User user = new User("Test"); binding.setUser(user); }

以上三步完成了基本數據綁定

2. 動態(tài)更新

當JavaBean對象的數據發(fā)生變化時,View自動更新。

正常的數據源只能做到綁定,想要動態(tài)更新,就必須要用Observable的方式存儲數據,以下是實現Observable的三種方式。

2.1 Observable 對象

實現android.databinding.Observable或繼承其實現類

private static class User extends BaseObservable { private String firstName; @Bindable public String getFirstName() { return this.firstName; } public void setFirstName(String firstName) { this.firstName = firstName; notifyPropertyChanged(BR.firstName); } }

2.2 Observable 字段

基本的數據類型都有相應的Observable類

public final ObservableField<String> firstName = new ObservableField<>();

2.3 Observable 集合

ObservableArrayMap<String, Object> mapUser = new ObservableArrayMap<>();

user.put("firstName", "Google");

2.4 引用

無論是對象、字段還是集合,都是以Observable的方式存儲數據。接下來就是在布局中引用了。

<layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <import type="android.databinding.ObservableMap" /> <variable name="user" type="com.example.ObservableUser" /> <variable name="firstName" type="android.databinding.ObservableField" /> <variable name="mapUser" type="ObservableMap&lt;String, Object>" /> </data>  <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent">  <!-- Observable 對象 --> <TextView android:text="@{user.firstName}" android:layout_width="wrap_content" android:layout_height="wrap_content" />  <!-- Observable 字段 --> <TextView android:text="@{firstName.get()}" android:layout_width="wrap_content" android:layout_height="wrap_content" />  <!-- Observable 集合 --> <TextView android:text="@{mapUser[`firstName`]}" android:layout_width="match_parent" android:layout_height="wrap_content" />  </LinearLayout> </layout>

3. RecyclerView動態(tài)綁定

private static class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.BindingHolder> {  private List<Model> mModels;  public static class BindingHolder extends RecyclerView.ViewHolder { private final ViewDataBinding binding;  public BindingHolder(ViewDataBinding binding) { super(binding.getRoot()); this.binding = binding; // 這里可以binding.getRoot().findViewById,然后再onBindViewHolder中綁定事件,目前沒有找到更方便的方法 }  public ViewDataBinding getBinding() { return binding; } }  @Override public BindingHolder onCreateViewHolder(ViewGroup parent, int viewType) { ViewDataBinding binding = DataBindingUtil.inflate( LayoutInflater.from(parent.getContext()), R.layout.list_item, parent, false);  BindingHolder holder = new BindingHolder(binding);

以上就是“Android怎么綁定數據”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI