dataBingding 使用 范例
2015-07-14 10:15
120 查看
理论相见这里 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0603/2992.html http://segmentfault.com/a/1190000002876984
binding activity
activity_collection
resource
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>
相关文章推荐
- Elasticsearch_安装配置(对应插件)
- android在String资源文件中加入符号
- 42、使用存放在存assets文件夹下的SQLite数据库
- hdu 5073 Galaxy 2014 Asia AnShan Regional Contest
- shell脚本示例,start stop restart
- 悟空学Linux专栏----第37篇
- UVA - 1326 Jurassic Remains
- 一步一步JavaEE
- 网页中嵌入视频
- jenkins安装入门
- CXF实现webService服务(一)
- 【JavaWeb】(6)Servlet
- 当使用easyui时,jquery的设置disabled属性方法失效
- POJ - 2828 Buy Tickets (段树单点更新)
- NSURLConnection基本使用
- 树形菜单复选框级联选择HTML
- 贪心/思维题 UVA 11292 The Dragon of Loowater
- JSON 之FastJson解析
- crontab
- 数据分析师与数据分析的恩怨