仿照listview的通用adapter写的,也是包括两个部分commonrecyclayerAdapter和recyclayerViewHolder
粘代码:
public abstract class CommonRecyclayerAdapter<T> extends RecyclerView.Adapter<RecyclayerViewHolder> { private String TAG="CommonRecyclayerAdapter"; protected LayoutInflater mInflater; protected Context mContext; protected List<T> mDatas; protected final int mItemLayoutId; public CommonRecyclayerAdapter(Context context, List<T> mDatas, int itemLayoutId){ this.mContext = context; this.mInflater = LayoutInflater.from(mContext); this.mDatas = mDatas; this.mItemLayoutId = itemLayoutId; } @Override public int getItemViewType(int position) { return super.getItemViewType(position); } @Override public RecyclayerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return RecyclayerViewHolder.get(mContext,parent,mItemLayoutId,viewType); } @Override public void onBindViewHolder(RecyclayerViewHolder holder, final int position) { convert(holder,getItem(position)); holder.getmConvertView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onItemClick(view,CommonRecyclayerAdapter.this.getItem(position)); Log.i(TAG,"onitemclick"); } }); } @Override public int getItemCount() { return mDatas==null?0:mDatas.size(); } public T getItem(int position){ return mDatas==null?null:mDatas.get(position); } public abstract void convert(RecyclayerViewHolder helper, T item);//用来实现设置控件的属性什么鬼的 public abstract void onItemClick(View view,T item);//这个就是实现item的点击事件 private RecyclayerViewHolder getViewHolder( ViewGroup parent,int viewType) { return RecyclayerViewHolder.get(mContext, parent, mItemLayoutId, viewType); } }
public class RecyclayerViewHolder extends RecyclerView.ViewHolder { private final SparseArray<View> mViews; private View mConvertView; public RecyclayerViewHolder(View itemView) { super(itemView); mViews=new SparseArray<View>(); mConvertView=itemView; } public static RecyclayerViewHolder get(Context context,ViewGroup parent, int mItemLayoutId,int viewType){ View view= LayoutInflater.from(context).inflate(mItemLayoutId,parent,false); RecyclayerViewHolder recyclayerViewHolder=new RecyclayerViewHolder(view); return recyclayerViewHolder; } public <T extends View> T getView(int viewId) { View view = mViews.get(viewId); if (view == null) { view = mConvertView.findViewById(viewId); mViews.put(viewId, view); } return (T) view; } /** * ΪTextView�����ַ� * * @param viewId * @param text * @return */ public RecyclayerViewHolder setText(int viewId, String text) { TextView view = getView(viewId); view.setText(text); return this; } /** * ΪImageView����ͼƬ * * @param viewId * @param drawableId * @return */ public RecyclayerViewHolder setImageResource(int viewId, int drawableId) { ImageView view = getView(viewId); view.setImageResource(drawableId); return this; } /** * ΪImageView����ͼƬ * * @param viewId * * @return */ public RecyclayerViewHolder setImageBitmap(int viewId, Bitmap bm) { ImageView view = getView(viewId); view.setImageBitmap(bm); return this; } /** * ΪImageView����ͼƬ * * @param viewId * * @return */ public RecyclayerViewHolder setImageByUrl(int viewId, String url) { x.image().bind((ImageView)getView(viewId),url ); return this; } public View getmConvertView(){ return mConvertView; } }
好了,放到这里不好的地方多多指正,共同进步!