日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
AndroidDataBinding

1. 基本結(jié)構(gòu)

成都創(chuàng)新互聯(lián)專注于上蔡網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供上蔡營銷型網(wǎng)站建設(shè),上蔡網(wǎng)站制作、上蔡網(wǎng)頁設(shè)計、上蔡網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)公司服務(wù),打造上蔡網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供上蔡網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

1.1 JavaBeans對象

 
 
  1. public class User {
  2. private final String firstName;
  3. public User(String firstName) {
  4. this.firstName = firstName;
  5. }
  6. public String getFirstName() {
  7. return this.firstName;
  8. }
  9. }

1.2 布局文件

 
 
  1. android:orientation="vertical"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent">
  4. android:layout_height="wrap_content"
  5. android:text="@{user.firstName}"/>

1.3 Activity

 
 
  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. ActivityMainbinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
  5. User user = new User("Test");
  6. binding.setUser(user);
  7. }

以上三步完成了基本數(shù)據(jù)綁定

2. 動態(tài)更新

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

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

2.1 Observable 對象

實現(xiàn)android.databinding.Observable或繼承其實現(xiàn)類

 
 
  1. private static class User extends BaseObservable {
  2. private String firstName;
  3. @Bindable
  4. public String getFirstName() {
  5. return this.firstName;
  6. }
  7. public void setFirstName(String firstName) {
  8. this.firstName = firstName;
  9. notifyPropertyChanged(BR.firstName);
  10. }
  11. }

2.2 Observable 字段

基本的數(shù)據(jù)類型都有相應(yīng)的Observable類

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

2.3 Observable 集合

ObservableArrayMap mapUser = new ObservableArrayMap<>();

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

2.4 引用

無論是對象、字段還是集合,都是以O(shè)bservable的方式存儲數(shù)據(jù)。接下來就是在布局中引用了。

 
 
  1. " />
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent">
  4. android:text="@{user.firstName}"
  5. android:layout_width="wrap_content"
  6. android:layout_height="wrap_content" />
  7. android:text="@{firstName.get()}"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content" />
  10. android:text="@{mapUser[`firstName`]}"
  11. android:layout_width="match_parent"
  12. android:layout_height="wrap_content" />

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

 
 
  1. private static class RecyclerViewAdapter
  2. extends RecyclerView.Adapter {
  3. private List mModels;
  4. public static class BindingHolder extends RecyclerView.ViewHolder {
  5. private final ViewDataBinding binding;
  6. public BindingHolder(ViewDataBinding binding) {
  7. super(binding.getRoot());
  8. this.binding = binding;
  9. // 這里可以binding.getRoot().findViewById,然后再onBindViewHolder中綁定事件,目前沒有找到更方便的方法
  10. }
  11. public ViewDataBinding getBinding() {
  12. return binding;
  13. }
  14. }
  15. @Override
  16. public BindingHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  17. ViewDataBinding binding = DataBindingUtil.inflate(
  18. LayoutInflater.from(parent.getContext()),
  19. R.layout.list_item,
  20. parent,
  21. false);
  22. BindingHolder holder = new BindingHolder(binding);

當(dāng)前名稱:AndroidDataBinding
標(biāo)題鏈接:http://www.5511xx.com/article/dppoieo.html