Google官方DataBinding绑定数据

2016-09-09  本文已影响283人  Small_Cake
1.首先我们要修改xml文件,在最外层嵌套layout,然后在layout里面加入了数据配置data,varialble里面写入我们要配置的对象别名和包名的全路径。
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <!--    //这里相当于绑定了数据,下面就可以使用了,user是别名,方便下面引用user.name-->    
    <data><variable name="user" type="cq.cake.databinding.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.name}"/>
        <TextView android:layout_width="wrap_content"                  
            android:layout_height="wrap_content"                  
            android:text="@{user.pass}"/>    
    </LinearLayout>    
</layout>
2.然后我们在Activity里面写入和设置对象的数据,运行自然就会显示这些我们设置的数据了!
public class MainActivity extends AppCompatActivity {    
    @Override    
    protected void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);       
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);        
        User user = new User("张三", "123456789");        
        //根据xml中的配置,这个binding自然就有setUser方法了        
        binding.setUser(user);    
    }
}

a.这里把原来的setContentView(R.layout.activity_main)方法用DataBindingUtil.setContentView(this, R.layout.activity_main)代替了
b.ActivityMainBinding怎么来的?
根据后面布局xml文件名activity_main变为ActivityMain再加上Binding就生成了, 直接按照这个命名规范写就可以了,如果使用快捷键自动生成返回对象会返回ViewDataBinding , 它是不会自动包含setUser方法的

//使用它需要Android2.1(Api7+)且Gradle 1.5.0-alpha1及以上
dataBinding {    
    enabled = true
}
Paste_Image.png

有了它再也不用再xml中写id,然后代码中findViewById,然后在通过这个控件去一个一个设置数据了!如果是服务器直接拿到这个对象,直接通过binder.setUser(user)就行了,是不是很方便,而且代码看起来非常的清爽!

上一篇 下一篇

猜你喜欢

热点阅读