adapter的封装
来源:互联网 发布:天一古琴淘宝店 编辑:程序博客网 时间:2024/06/06 23:02
1、数据使用泛型
2、绑定数据使用抽象方法
3、ViewHolder中的View成员变量转而通过view数组实现(SparseArray<View>)
4、将常用方法写在基类中
代码实现:
adapter基类:
public abstract class BaseAdapter<T,H extends BaseViewHolder> extends RecyclerView.Adapter<BaseViewHolder> { protected List<T> datas; protected LayoutInflater mInflater; protected Context mContext; protected final int mlayoutId; protected OnItemClickListener mlistener; public BaseAdapter(Context context, List<T> datas,int layoutId){ this.datas = datas; this.mContext = context; this.mlayoutId = layoutId; mInflater = LayoutInflater.from(context); } public interface OnItemClickListener{ void OnItemClick(View view, int position); } public void setOnItemClickListener(OnItemClickListener listener){ this.mlistener = listener; } @Override public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflater.inflate(mlayoutId,null,false); BaseViewHolder mholder = new BaseViewHolder(view,mlistener); return mholder; } @Override public void onBindViewHolder(BaseViewHolder holder, int position) { T t = getItem(position); bindDatas(holder,t); } public T getItem(int position) { return datas.get(position); } //绑定数据使用抽象方法 public abstract void bindDatas(BaseViewHolder holder,T t); @Override public int getItemCount() { return datas.size(); }}viewHolder类:
public class BaseViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { //ViewHolder中的View成员变量转而通过view数组来实现 private SparseArray<View> views; protected BaseAdapter.OnItemClickListener mlistener; public BaseViewHolder(View itemView, BaseAdapter.OnItemClickListener listener) { super(itemView); views = new SparseArray<>(); this.mlistener = listener; itemView.setOnClickListener(this); } private View findView(int id){ View view = views.get(id); if(view==null){ view = itemView.findViewById(id); views.put(id,view); } return view; } public <T extends View>T getView(int id){ return (T)findView(id); } public TextView getTextView(int id){ return getView(id); } public Button getButton(int id){ return getView(id); } public ImageView getImageView(int id){ return getView(id); } public ImageButton getImageButton(int id){ return getView(id); } @Override public void onClick(View view) { if(mlistener!=null){ mlistener.OnItemClick(view,getLayoutPosition()); } }}另外封装的simpleAdapter类
public abstract class SimpleAdapter<T> extends BaseAdapter<T,BaseViewHolder> { public SimpleAdapter(Context context, List<T> datas, int layoutId) { super(context, datas, layoutId); }}
0 0
- RecycleView Adapter的封装
- adapter的封装
- Adapter的简单封装
- Adapter的封装
- RecyclerView.Adapter的封装
- Recycleview的adapter封装
- 封装的Adapter的优缺点
- ReCycleView的 Adapter的封装
- android 简单的adapter封装
- 封装的viewholder和adapter
- Recyclerview Adapter 的简单封装
- RecyclerView.Adapter 的简单封装
- Android---封装ListView的Adapter
- 简单封装RecyclerView的Adapter
- 商城之Adapter的封装
- Android 封装RecyclerView的Adapter
- RecyclerView.Adapter的基本封装
- 关于RecyclerView的Adapter封装
- 函数动态调用 研究
- SQL 数据库 学习 011 关系、一对一、一对多、多对多
- iOS应用安全读书笔记之语音邮件
- uboot常用命令
- Java之线程通信一
- adapter的封装
- Handler通信机制源码解析
- iuni-myOrder(分页$pagination)
- HTML5新特性浅谈
- 【高精度计算】加减乘模板(水)
- python数据结构学习笔记-2016-10-14-02-python列表
- 算法学习:遗传算法初体验
- 递归与循环相比时间优势的真正来源
- js可以用到的代码