Android 官方数据绑定 Data Binding Libr

作者: Nebula995 | 来源:发表于2016-09-26 21:53 被阅读542次

    DataBinding 支持 Android 2.1 (API level 7+)
    并且 Gradle 1.5.0-alpha1 以上
    以上条件毫无疑问不用考虑了,如果有不满足条件的请自行百度。废话不多说直接上实战

    构建环境

    在你的对应Module中的 build.gradle文件中添加,然后Rebuild Project就可使用DataBinding了

    android {    
        ....    
        dataBinding {     
             enabled = true  
        }
    }
    
    
    

    Layout 文件

    <?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:id="@+id/name"
               android:text="@{user.firstName}"/>
           <TextView android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="@{user.lastName}"/>
       </LinearLayout>
    </layout>
    

    使用dataBinding后根布局就需要改成layout,然后在

    <variable name="user" type="com.example.User"/>
    

    最后再在Activity的onCreate中

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

    至此即实现了显示绑定

    双向绑定

    只需要在@后面加一个=即可

     <TextView android:text="@={user.lastName}"/>
    

    获取view

    DataBinding.id即可获取view,且自动识别类型

       MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
        binding.user
    
    Object 对象
    /**
     * Created by cheng on 2016/9/26.
     */
    public class User {
       public final String firstName;
       public final String lastName;
       public User(String firstName, String lastName) {
           this.firstName = firstName;
           this.lastName = lastName;
       }
    }
    

    还有跟多用法请参看Android 官方文档
    https://developer.android.com/topic/libraries/data-binding/index.html?hl=zh-cn#data_binding_layout_files
    dataBinding特性

    • 支持双向绑定
    • 支持绑定Listener 事件
    • 支持绑定方法
    • 支持绑定属性
    • 支持直接获取View 免使用findViewById
      等等其他特性

    相关文章

      网友评论

        本文标题:Android 官方数据绑定 Data Binding Libr

        本文链接:https://www.haomeiwen.com/subject/iinqyttx.html