databinding學習(4)

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

相關文章
相關標籤/搜索