package com.example.jingbin.cloudreader.base.baseadapter; import android.databinding.DataBindingUtil; import android.databinding.ViewDataBinding; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; /** * Created by jingbin on 2016/11/25 */ public abstract class BaseRecyclerViewHolder<T, D extends ViewDataBinding> extends RecyclerView.ViewHolder { public D binding; public BaseRecyclerViewHolder(ViewGroup viewGroup, int layoutId) { // 注意要依附 viewGroup,不然显示item不全!! super(DataBindingUtil.inflate(LayoutInflater.from(viewGroup.getContext()), layoutId, viewGroup, false).getRoot()); // 得到这个View绑定的Binding binding = DataBindingUtil.getBinding(this.itemView); } /** * @param object the data of bind * @param position the item position of recyclerView */ public abstract void onBindViewHolder(T object, final int position); /** * 当数据改变时,binding会在下一帧去改变数据,如果我们需要立即改变,就去调用executePendingBindings方法。 */ void onBaseBindViewHolder(T object, final int position) { onBindViewHolder(object, position); binding.executePendingBindings(); } }