Android开发-数据绑定-DataBinding-AndroidStudio(三)多组数据绑定

多组数据绑定方式,使用include~~

转载请注明出处:http://blog.csdn.net/iwanghang/article/details/53201501


MainActivity.java:

package com.iwanghang.databinding;

import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.iwanghang.databinding.databinding.ActivityMainBinding;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //setContentView(R.layout.activity_main);
        /**
         * 用DataBinding方式载入layout
         */
        ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);

        User user = new User();
        user.setName("用户名");
        user.setNickName("昵称");
        //user.setNickName(null);
        user.setLevel(4);
        user.setEmail("abc@123.com");
        user.setVip(true);

        User user1 = new User();
        user1.setName("用户名1");
        user1.setNickName("昵称1");
        user1.setLevel(2);
        user1.setEmail("def@456.com");
        user1.setVip(false);

        List<User> users = new ArrayList<>();
        users.add(user);
        users.add(user1);

        binding.setUsers(users);
    }
}
User.java:

package com.iwanghang.databinding;

import android.view.View;
import android.widget.Toast;

public class User {
    private String name;
    private String nickName;
    private String email;
    private int level;
    private boolean vip;

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public boolean isVip() {
        return vip;
    }

    public void setVip(boolean vip) {
        this.vip = vip;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * 设置点击事件
     */
    public void clickName(View view){
        Toast.makeText(view.getContext(), "clickName:" + name, Toast.LENGTH_SHORT).show();
    }
    public boolean longClickName(View view){
        Toast.makeText(view.getContext(), "longClickName", Toast.LENGTH_SHORT).show();
        return true;
    }
}
activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<!--改造后的layout-->
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <!--数据模块-->
    <data>
        <!--只有一个user-->
        <!--<variable-->
            <!--name="user"-->
            <!--type="com.iwanghang.databinding.User"/>-->

        <!--使用users-->
        <import type="com.iwanghang.databinding.User"/>
        <variable
            name="users"
            type="java.util.List<User>"/>
    </data>
    <!--样式模块-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:gravity="center"
        tools:context="com.iwanghang.databingding.MainActivity">
        <include layout="@layout/user_layout"
            app:user="@{ users[0] }"/>
        <include layout="@layout/user_layout"
            app:user="@{ users[1] }"/>
    </LinearLayout>
</layout>
user_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<!--改造后的layout-->
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <!--数据模块-->
    <data>
        <variable
            name="user"
            type="com.iwanghang.databinding.User"/>
    </data>
    <!--样式模块-->
    <LinearLayout
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center"
        tools:context="com.iwanghang.databingding.MainActivity">

        <TextView
            android:onClick="@{ user.clickName }"
            android:onLongClick="@{ user.longClickName }"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@{ user.vip ? 0xffff0000 : 0xff0000}"
            android:text="@{ user.nickName + `(` + user.name + `)` }" />

        <!--如果nickName为空,显示name;如果如果nickName非空,显示nickName。下面2个写法都可以-->
        <!--android:text="@{ user.nickName == null ? user.name : user.nickName }"-->
        <!--android:text="@{ user.nickName ?? user.name }"-->
        <TextView
            android:text="@{ user.nickName ?? user.name }"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

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

        <!--如果level<3,颜色为00ff00,否则,颜色为0000ff-->
        <!--@{ user.level < 3 ? 0xff00ff00 : 0xff0000ff }-->
        <!--@{ user.level < 3 ? 0xff00ff00 : 0xff0000ff }-->
        <!--需要写成第二行的形式,因为“<”需要转义成“<”-->
        <TextView
            android:textColor="@{ user.level < 3 ? 0xff00ff00 : 0xff0000ff }"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="level" />
    </LinearLayout>
</layout>
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/53201501



欢迎移动开发爱好者交流
沈阳或周边城市公司有意开发Android,请与我联系
联系方式

微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com




发布了275 篇原创文章 · 获赞 305 · 访问量 45万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览