Android开发-数据绑定-DataBinding-AndroidStudio(二)单组数据绑定

本篇博客主要介绍DataBinding使用过程中的代码范例:

比如小于号转义字符,括号的转义字符,或运算。主要看一下layout就可以。

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

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;

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);
        binding.setUser(user);
    }
}

User.java:

package com.iwanghang.databinding;

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;
    }
}

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">
    <!--数据模块-->
    <data>
        <variable
            name="user"
            type="com.iwanghang.databinding.User"/>
    </data>
    <!--样式模块-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center"
        tools:context="com.iwanghang.databingding.MainActivity">

        <TextView
            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/53198038



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

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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值