您的位置:首页 > 其它

dataBingding 使用 范例

2015-07-14 10:15 120 查看
理论相见这里 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0603/2992.html http://segmentfault.com/a/1190000002876984
package com.liangfeizc.databindingsamples.basic;

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

import com.liangfeizc.databindingsamples.BaseActivity;
import com.liangfeizc.databindingsamples.R;
import com.liangfeizc.databindingsamples.databinding.ActivityBasicBinding;

public class BasicActivity extends BaseActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

ActivityBasicBinding binding = DataBindingUtil.setContentView(
this, R.layout.activity_basic);
User user = new User("fei", "Liang");
binding.setUser(user);
}
}


activity_basic.xml


<layout xmlns:android="http://schemas.android.com/apk/res/android">

<data>
<import type="com.liangfeizc.databindingsamples.basic.User" />
<import type="com.liangfeizc.databindingsamples.utils.MyStringUtils" alias="StringUtils" />
<import type="android.view.View" />

<variable name="user" type="User" />
</data>

<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="Display Name: " />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.displayName ?? user.lastName}" />
</TableRow>

<TableRow>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="First Name: " />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{StringUtils.capitalize(user.firstName)}" />
</TableRow>

<TableRow>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="Last Name: " />

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

<TableRow>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="Age: " />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{String.valueOf(user.age)}" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Adult"
android:textColor="@android:color/holo_red_light"
android:textStyle="italic"
android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}" />
</TableRow>
</TableLayout>
</layout>


binding activity

package com.liangfeizc.databindingsamples.custombindings;

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

import com.liangfeizc.databindingsamples.BaseActivity;
import com.liangfeizc.databindingsamples.ContactBinding;
import com.liangfeizc.databindingsamples.R;

public class CustomBindingActivity extends BaseActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

ContactBinding binding = DataBindingUtil.setContentView(
this, R.layout.activity_custom_binding);

Contact contact = new Contact("111", "Japan");
binding.setContact(contact);
}
}


CollectionActivity

package com.liangfeizc.databindingsamples.collections;

import android.app.job.JobInfo;
import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.SparseArray;
import android.view.Menu;
import android.view.MenuItem;

import com.liangfeizc.databindingsamples.BaseActivity;
import com.liangfeizc.databindingsamples.R;
import com.liangfeizc.databindingsamples.databinding.CollectionsBinding;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CollectionActivity extends BaseActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CollectionsBinding binding = DataBindingUtil.setContentView(
this, R.layout.activity_collection);

String[] literals = new String[]{"liang", "fei"};

List<String> list = new ArrayList<>();
SparseArray<String> sparse = new SparseArray<>(2);

String key = "firstName";
int index = 0;

for (int i = 0; i < literals.length; i++) {
list.add(literals[i]);
sparse.put(0, literals[i]);
}

Map<String, String> map = new HashMap<>();
map.put(key, "liang");
map.put("lastName", "fei");

binding.setIndex(index);
binding.setKey(key);
binding.setList(list);
binding.setSparse(sparse);
binding.setMap(map);
}
}


activity_collection

<layout xmlns:android="http://schemas.android.com/apk/res/android">

<data class="CollectionsBinding">
<import type="java.util.Map" />
<import type="java.util.List" />
<import type="android.util.SparseArray" />

<variable name="list" type="List<String>" />
<variable name="sparse" type="SparseArray<String>"/>
<variable name="map" type="Map<String, String>"/>
<variable name="index" type="int" />
<variable name="key" type="String" />
</data>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">

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

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="sparse[index]:" />
<TextView
android:text="@{sparse[index]}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="map[key]:" />
<TextView
android:text="@{map[key]}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<View
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black" />

<TextView
android:text='map["firstName"]'
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:text='@{map["firstName"]}'
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:text="map[`firstName`]"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:text="@{map[`firstName`]}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:text="map["firstName"]"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:text="@{map["firstName"]}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>

</layout>


resource

package com.liangfeizc.databindingsamples.resources;

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

import com.liangfeizc.databindingsamples.BaseActivity;
import com.liangfeizc.databindingsamples.R;
import com.liangfeizc.databindingsamples.basic.User;
import com.liangfeizc.databindingsamples.databinding.ResourceBinding;

public class ResourceActivity extends BaseActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ResourceBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_resource);

binding.setLarge(false);

binding.setFirstName("liang");
binding.setLastName("fei");

binding.setBananaCount(5);
binding.setOrangeCount(10);
}
}


activity_resource

<layout xmlns:android="http://schemas.android.com/apk/res/android">

<data class="ResourceBinding">
<variable name="large" type="boolean" />
<variable name="firstName" type="String" />
<variable name="lastName" type="String" />
<variable name="bananaCount" type="int" />
<variable name="orangeCount" type="int" />
</data>

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

<TextView
android:padding="@{large? (int)@dimen/largePadding : (int)@dimen/smallPadding}"
android:background="@android:color/black"
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<!--     android:text="@{@string/nameFormat(firstName, lastName)}"-->
<TextView
android:text="@{@string/nameFormat(firstName, lastName)}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!--  android:textColor="@color/background_material_light"-->
<TextView
android:text="@{@plurals/banana(bananaCount)}"
android:layout_width="wrap_content"
android:textColor="@{large?@color/background_material_light:@color/white}"
android:layout_height="wrap_content" />

<TextView
android:text="@{@plurals/orange(orangeCount, orangeCount)}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</layout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: