Android Databinding简单使用
来源:互联网 发布:mac 必应词典下载 编辑:程序博客网 时间:2024/06/05 11:23
2015年谷歌I/O大会上介绍了一个非常厉害的新框架DataBinding,数据绑定框架,谷歌官方原生支持MVVM模型,给我们带来了很大的方便,以前我们可能需要在每个Activity里写很多的findViewById,不仅麻烦,还增加了代码的耦合性,如果我们使用DataBinding,就可以抛弃那么多的findViewById,省时省力。
1.在gradle中配置
在Android 节点下添加
dataBinding { enabled = true;}
2.创建一个简单bean类
3.listview 的item xml文件设置
lv_item.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type=".....User" alias="myUser"/><! - -import type = bean 类的全类名 alisas 属性:当导入的类重名时起的别称用来区分相同类- ->
<variable
name="user"
type="myUser"/>
</data>
<RelativeLayout
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_icon"
android:layout_marginRight="30dp"
android:src="@drawable/icon"
android:layout_width="50dp"
android:layout_height="50dp"/>
<TextView
android:id="@+id/tv_name"
android:text="@{usermy.name}"
android:textSize="18sp"
android:layout_toRightOf="@id/iv_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_age"
android:text="@{usermy.age}"
android:textSize="18sp"
android:layout_below="@id/tv_name"
android:layout_toRightOf="@id/iv_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
</layout>
4.java文件中设置
import android.app.Activity;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import .....LvItemBinding;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MainActivity extends Activity {
private ListView lv;
String[] names = {"周杰伦","林俊杰","陶喆","王力宏"};
String[] ages = {"28","29","30","31"};
List<User> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = ((ListView) findViewById(R.id.main_lv));
MyAdapter adapter = new MyAdapter();
loadingData();
lv.setAdapter(adapter);
}
private void loadingData() {
Random random = new Random();
for (int i = 0; i < 30; i++) {
User user = new User(names[random.nextInt(4)], ages[random.nextInt(4)]);
list.add(user);
}
}
private class MyAdapter extends BaseAdapter {
private LvItemBinding binding;
public MyAdapter() {
}
@Override
public int getCount() {
return list == null ? 0 : list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder = null;
if (convertView == null) {
binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lv_item, parent, false);
holder = new Holder();
holder.setItemBinding(binding);
convertView = binding.getRoot();
convertView.setTag(holder);
}else {
holder = (Holder) convertView.getTag();
binding = holder.getItemBinding();
}
binding.setUsermy(list.get(position));
return convertView;
}
}
static class Holder {
private LvItemBinding itemBinding;
public LvItemBinding getItemBinding() {
return itemBinding;
}
public void setItemBinding(LvItemBinding itemBinding) {
this.itemBinding = itemBinding;
}
}
}
可见dataBinding用法还是比较简单的
另外还有一些高级的用法可见 http://www.jianshu.com/p/2d3227d9707d
- Android Databinding简单使用
- android DataBinding 的简单使用
- Android Databinding 的简单使用(上)
- DataBinding的简单使用
- DataBinding简单使用
- 简单使用DataBinding
- DataBinding的简单使用
- Android--DataBinding基础使用
- Android使用DataBinding入门
- android中使用DataBinding
- Android dataBinding 使用记录
- Android设计模式MVVM之DataBinding简单使用
- Android 数据绑定解耦DataBinding的简单使用
- Android进阶---android databinding 使用
- Android使用DataBinding代替findViewById
- android 使用DataBinding问题总结
- Android DataBinding使用总结(一)
- Android DataBinding使用总结(二)
- Xcode8.3 上传Appstore 报 ERROR ITMS-90534:"Invaild Toolchain. "
- 一篇关于JIT编译器的文章(关于OSR栈上替换的)
- BMP图片格式解析并显示示例程序
- python阶段小测验-不喜勿喷(奔跑在大佬的路上的第一篇文章)
- 从相册选择图片后保存到本地
- Android Databinding简单使用
- android ACache 缓存
- Android Studio调试技巧
- JavaScript,大有前景的编程语言
- Spring Boot的启动器Starter系列
- H5基础知识第八课时(JS数据类型和输出方法)
- 'getWidth()' is deprecated,'getHeight()' is deprecated
- 工业大数据漫谈11:工业大数据可视化的难点
- String,StringBuffer和StringBuilder之间的区别,速度比