RecyclerView使用Databindingandroid
(1)list_item.xmlapp
<?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)實現Adapteride
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.RecyclerViewthis
(4)在Activity中 聲明code
private RecyclerView mRecyclerView; private RecyclerView.LayoutManager mLayoutManager;
調用xml
binding.recycletView.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(this); binding.recycletView.setLayoutManager(mLayoutManager); binding.recycletView.setAdapter(new MyAdapter());
utf-8