Android MVVM 开发模式插件库 Android Data Binding Library

关于MVVM之类的可以自行从网上了解,比如:阮一峰----MVC,MVP 和 MVVM 的图示


Android Data Binding Library可以在layout布局xml文件中绑定数据,实现式图与业务逻辑分离。

相信大家的Gradle和Studio都在2.0以上了,在这些版本上只需要在build.gradle(Module:***)中的添加

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

在工程中建一个javabean,比如:

public class User {
    public String name;
    public String phone;
    public boolean isMan;
}

在activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:bind="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="user"
            type="com.zhang.databinding.User" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

	<TextView
    	 android:layout_width="wrap_content"
   	 android:layout_height="wrap_content"
   	 android:text="@{user.name}" />
</LinearLayout></layout>

MainActivity的setContentView修改

//        setContentView(R.layout.activity_main);
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

创建User实例对象

User user = new User();
user.name = "Ray";
user.phone = "12345";
user.isMan = true;

binding.setUser(user);

运行即会显示名字  Ray


Binding类的名字也可以自定义,只需在xml文件中修改<data>

<data class="MyDataBinding">
或者 <data class= ".MyDataBinding" >

或者<data class="com.zmn.MyDataBinding">


同时Data Binding还支持导入包,android自带的变量,布局引用,表达式,集合,资源文件使用。

<data class="MyDataBinding">

    <import type="android.view.View" />

    <import type="java.util.List" />

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

    <variable
        name="sex"
        type="String" />

    <variable
        name="list"
        type="List&lt;String>" /> 
	<!--//不能使用<符号-->
</data>


<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="@{sex}" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Ray is a man ."
    android:visibility="@{user.isMan?View.VISIBLE:View.GONE}" />

<include
    layout="@layout/phone_layout"
    bind:user="@{user}" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{list[0]}" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{user.isMan?@string/man:@string/woman}" />


引用布局phone_layout.xml

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="user"
            type="com.zhang.databinding.User" />
    </data>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.phone}" />
    </LinearLayout>
</layout>

MainActivity代码如下

MyDataBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

User user = new User();
user.name = "Ray";
user.phone = "12345";
user.isMan = true;

binding.setUser(user);
binding.setSex("男");

List<String> list = new ArrayList<>();
list.add("hello");
list.add("data");
list.add("list3");

binding.setList(list);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值