Recycleview的adapter封装

来源:互联网 发布:云计算数据中心 编辑:程序博客网 时间:2024/05/18 12:04

ViewHolder封装

public class ViewHolder extends RecyclerView.ViewHolder {private SparseArray<View> mViews;private View mConvertView;private Context mContext;public ViewHolder(Context context, View itemView, ViewGroup parent) {    super(itemView);    mContext = context;    mConvertView = itemView;    mViews = new SparseArray<View>();}public static ViewHolder get(Context context, ViewGroup parent, int layoutId) {    View itemView = LayoutInflater.from(context).inflate(layoutId, parent, false);    ViewHolder holder = new ViewHolder(context, itemView, parent);    return holder;}/** * 通过viewId获取控件 * * @param viewId * @return */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;}}

adapter封装

public abstract class CommonAdapter<T> extends RecyclerView.Adapter<ViewHolder>{protected Context mContext;protected int mLayoutId;protected List<T> mDatas;protected LayoutInflater mInflater;public CommonAdapter(Context context, int layoutId, List<T> datas){    mContext = context;    mInflater = LayoutInflater.from(context);    mLayoutId = layoutId;    mDatas = datas;}@Overridepublic ViewHolder onCreateViewHolder(final ViewGroup parent, int viewType){    ViewHolder viewHolder = ViewHolder.get(mContext, parent, mLayoutId);    return viewHolder;}@Overridepublic void onBindViewHolder(ViewHolder holder, int position) { //        holder.updatePosition(position);    convert(holder, mDatas.get(position),position);}public abstract void convert(ViewHolder holder, T t,int postion);@Overridepublic int getItemCount() {    return mDatas.size();} }

使用

idRecy.setAdapter(new CommonAdapter(RecyDemoActivity.this, R.layout.recly_item_layout, arrList) {        @Override        public void convert(ViewHolder holder, Object o,int postion) {            String mStr=o.toString();            TextView tvLL = holder.getView(R.id.tv_item_text);            tvLL.setText(mStr);        }  //            @Override       //            public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {  //   //            }    });
原创粉丝点击