package com.mm.android.deviceaddmodule.mobilecommon.base.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import java.util.ArrayList; import java.util.List; public abstract class CommonRecyclerViewAdapter extends RecyclerView.Adapter { protected RecyclerView mRecyclerView; protected List mList; //数据源集合 protected Context mContext; protected int mLayout; protected RecyclerViewItemClickListener mRecylerViewItemClickListener; public CommonRecyclerViewAdapter(RecyclerView recyclerView, int layout) { mRecyclerView = recyclerView; mContext = mRecyclerView.getContext(); mLayout = layout; mList = new ArrayList<>(); } /** * 设置全新数据源 * * @param data */ public void setData(List data) { if (data != null && !data.isEmpty()) { mList = data; } else {//传入的数据为空,则清空数据 mList.clear(); } notifyDataSetChanged(); } public void addData(List list) { if (list != null) { this.mList.addAll(list); } } public void clearData() { this.mList.clear(); } public void replaceData(List list2) { if (list2 != mList) { clearData(); addData(list2); } notifyDataSetChanged(); } public void setRecylerViewItemClickListener(RecyclerViewItemClickListener listener) { mRecylerViewItemClickListener = listener; } @Override public CommonRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(mContext).inflate(viewType, parent, false); CommonRecyclerViewHolder viewHolder = new CommonRecyclerViewHolder(mRecyclerView, itemView, mRecylerViewItemClickListener); return viewHolder; } @Override public int getItemViewType(int position) { if (mLayout == 0) { throw new RuntimeException("no layout id"); } return mLayout; } @Override public void onBindViewHolder(CommonRecyclerViewHolder holder, int position) { convert(holder, getItem(position), position); } @Override public int getItemCount() { return mList.size(); } //填充数据 public abstract void convert(CommonRecyclerViewHolder viewHolder, T item, int pos); public interface RecyclerViewItemClickListener { void onRecylerViewItemClick(ViewGroup parent, View itemView, int position); } public T getItem(int pos) { return mList.get(pos); } /** * 获取数据源 * * @return */ public List getData() { return mList; } }