您的位置:首页 > 移动开发 > Android开发

databinding学习(4)

2015-09-22 00:00 387 查看
摘要: RecyclerView使用Databinding

RecyclerView使用Databinding

(1)list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="user_1"
type="com.example.lin.myapplication.model.User"/>
</data>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:text="@{user_1.firstName}"
android:id="@+id/tvFirstName"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tvLastName"
android:text="@{user_1.lastName}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</layout>

(2)实现Adapter

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.BindingHolder>{
private List<User> users;

public MyAdapter() {
users = new ArrayList<>(10);
for(int i=0; i< 10; i++) {
User user = new User("lin", "zhibiao");
users.add(user);
}
}

@Override
public int getItemCount() {
return users.size();
}

@Override
public BindingHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewDataBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),
R.layout.list_item,parent,false);
BindingHolder holder = new BindingHolder(binding.getRoot());
holder.setBinding(binding);
return holder;
}

@Override
public void onBindViewHolder(BindingHolder holder, int position) {
User user = users.get(position);
holder.getBinding().setVariable(BR.user_1,user);
holder.getBinding().executePendingBindings();
}

public static class BindingHolder extends RecyclerView.ViewHolder {
ViewDataBinding binding;

public BindingHolder(View itemView) {
super(itemView);
}

public ViewDataBinding getBinding() {
return binding;
}

public void setBinding(ViewDataBinding binding) {
this.binding = binding;
}

}
}

(3)在需要使用RecyclerView的Activity布局中

<android.support.v7.widget.RecyclerView
android:id="@+id/recycletView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

注意 一定要写 全名称
android.support.v7.widget.RecyclerView

(4)在Activity中
声明

private RecyclerView mRecyclerView;
private RecyclerView.LayoutManager mLayoutManager;

调用

binding.recycletView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
binding.recycletView.setLayoutManager(mLayoutManager);

binding.recycletView.setAdapter(new MyAdapter());


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息