介绍
怎么在Android中利用RecyclerView实现一个通用适配器功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>实现代码:强>
RViewHolder
import android.content.Context; import android.graphics.Bitmap; import android.support.v7.widget.RecyclerView.ViewHolder; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; public class  RViewHolder extends ViewHolder  { ,private Context  mContext; ,private View  mConvertView; ,private SparseArraymViews; ,public RViewHolder (View itemView), { 超级才能(itemView); 时间=mConvertView 才能;itemView; 时间=this.mViews 才能;new SparseArray (); ,} ,public static  RViewHolder get (Context 上下文,ViewGroup 父母,,int layoutId,, int 位置),{ View 才能;View =, LayoutInflater.from(上下文).inflate (layoutId,,父母,,假); return 才能;new  RViewHolder(查看); ,}/* * *,才能通过控件的Id获取对于的控件,如果没有则加入视图 *,才能 *,才能@param viewId *才能@return ,*/,public & lt; T extends  View>, T getView (int viewId), { View 才能;View =, mViews.get (viewId); if 才能;(view ==, null), { ,,view =, mConvertView.findViewById (viewId); ,,mViews.put (viewId,视图); ,,} return 才能;(T),视图; ,}/* * *,才能为TextView设置字符吗? ? *,才能 *,才能@param viewId *,才能@param 文本 *才能@return ,*/,public ViewHolder  setText (int viewId, String 文本),{ TextView 才能;view =, getView (viewId); view.setText才能(文本); return 才能;; ,}/* * *,才能为ImageView设置图片 *,才能 *,才能@param viewId *,才能@param drawableId *才能@return ,*/,public ViewHolder  setImageResource (int viewId, int drawableId), { ImageView 才能;view =, getView (viewId); view.setImageResource才能(drawableId); return 才能;; ,}/* * *,才能为ImageView设置图片 *,才能 *,才能@param viewId *,才能@param drawableId *才能@return ,*/,public ViewHolder  setImageBitmap (int viewId, Bitmap bm), { ImageView 才能;view =, getView (viewId); view.setImageBitmap才能(bm); return 才能;; ,} ,public View  getConvertView (), { return 才能;mConvertView; ,} }
这里是RBaseAdapter
import java.util.ArrayList; import java.util.Collection; import 并不知道; import android.content.Context; import android.support.v7.widget.RecyclerView.Adapter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; public abstract  class RBaseAdapter< T>, extends Adapter, { ,private Context  mContext; ,private List< T>,列表; ,protected LayoutInflater  mInflater; ,private int  mItemLayoutId; ,public RBaseAdapter (Context 上下文),{//才能,TODO Auto-generated constructor 存根=this.mContext 才能;环境; 时间=this.mInflater 才能;LayoutInflater.from (mContext); 时间=this.mItemLayoutId 才能;new LinearLayout (mContext) .getId (); 时间=this.list 才能;new ArrayList (); ,} ,public RBaseAdapter (Context 上下文,List ,列表),{//才能,TODO Auto-generated constructor 存根=this.mContext 才能;环境; 时间=this.mInflater 才能;LayoutInflater.from (mContext); 时间=this.mItemLayoutId 才能;new LinearLayout (mContext) .getId (); this.list 才能=,列表; ,} ,public RBaseAdapter (Context 上下文,List ,,, int itemLayoutId), {=this.mContext 才能;环境; 时间=this.mInflater 才能;LayoutInflater.from (mContext); 时间=this.mItemLayoutId 才能;itemLayoutId; this.list 才能=,列表; ,} null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 怎么在Android中利用RecyclerView实现一个通用适配器功能