package -.adapter;--import android.content.Context;import android.databinding.DataBindingUtil;import android.databinding.ViewDataBinding;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import java.util.List;/** * --------------------------- *的基类 */public abstract class BaseBindingAdapter
extends RecyclerView.Adapter { protected Context context; protected LayoutInflater mInflater; protected List mDatas; public BaseBindingAdapter(Context context, List datas) { this.context = context; this.mDatas = datas; mInflater = LayoutInflater.from(context); } @Override public BindingViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { H binding = DataBindingUtil.inflate(mInflater, getViewHolderLayoutId(), parent, false); return new BindingViewHolder(binding); } @Override public void onBindViewHolder(BaseBindingAdapter.BindingViewHolder holder, int position) { T itemInfo = mDatas.get(position); H binding = (H) holder.getBinding(); onBindMyViewHolder(holder, position, itemInfo, binding); holder.getBinding().executePendingBindings(); //解决闪烁问题 } @Override public int getItemCount() { return mDatas == null ? 0 : mDatas.size(); } /** * 获取 viewItem的 layoutId * * @return */ protected abstract int getViewHolderLayoutId(); /** * @param holder * @param position * @param itemInfo * @param binding */ protected abstract void onBindMyViewHolder(BindingViewHolder holder, int position, T itemInfo, H binding); public class BindingViewHolder extends RecyclerView.ViewHolder { private ViewDataBinding binding; public BindingViewHolder(ViewDataBinding binding) { super(binding.getRoot()); this.binding = binding; } public ViewDataBinding getBinding() { return binding; } }}