Home | History | Annotate | Download | only in bindingdemo
      1 package com.android.example.bindingdemo;
      2 
      3 import android.support.v7.widget.RecyclerView;
      4 import android.view.LayoutInflater;
      5 import android.view.ViewGroup;
      6 
      7 import android.databinding.DataBindingUtil;
      8 import android.databinding.ViewDataBinding;
      9 
     10 abstract public class DataBoundAdapter<T extends ViewDataBinding>
     11         extends RecyclerView.Adapter<DataBoundAdapter.DataBoundViewHolder<T>> {
     12     final int mLayoutId;
     13     final Class<T> mBinderInterface;
     14     public DataBoundAdapter(int mLayoutId, Class<T> mBinderInterface) {
     15         this.mLayoutId = mLayoutId;
     16         this.mBinderInterface = mBinderInterface;
     17     }
     18 
     19     @Override
     20     public DataBoundAdapter.DataBoundViewHolder<T> onCreateViewHolder(ViewGroup viewGroup,
     21                                                                       int type) {
     22         T binder = DataBindingUtil.inflate(LayoutInflater.from(viewGroup.getContext()), mLayoutId,
     23                 viewGroup, false);
     24         return new DataBoundViewHolder(binder);
     25     }
     26 
     27     static class DataBoundViewHolder<T extends ViewDataBinding> extends RecyclerView.ViewHolder {
     28         public final T dataBinder;
     29         public DataBoundViewHolder(T mViewBinder) {
     30             super(mViewBinder.getRoot());
     31             this.dataBinder = mViewBinder;
     32         }
     33     }
     34 }
     35