美文网首页
Google官方DataBinding绑定数据

Google官方DataBinding绑定数据

作者: Small_Cake | 来源:发表于2016-09-09 17:01 被阅读283次
    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方法的

    • 还有最重要的一点,就是需要在build.gradle中的android里面加入此属性
    //使用它需要Android2.1(Api7+)且Gradle 1.5.0-alpha1及以上
    dataBinding {    
        enabled = true
    }
    
    Paste_Image.png

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

    相关文章

      网友评论

          本文标题:Google官方DataBinding绑定数据

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