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<T> extends RecyclerView.Adapter<CommonRecyclerViewHolder> { protected RecyclerView mRecyclerView; protected List<T> 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<T> data) { if (data != null && !data.isEmpty()) { mList = data; } else {//ä¼ å…¥çš„æ•°æ®ä¸ºç©ºï¼Œåˆ™æ¸…ç©ºæ•°æ® mList.clear(); } notifyDataSetChanged(); } public void addData(List<T> list) { if (list != null) { this.mList.addAll(list); } } public void clearData() { this.mList.clear(); } public void replaceData(List<T> 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<T> getData() { return mList; } }