android list单一布局 万能基类适配器
来源:互联网 发布:vs2013写c语言 编辑:程序博客网 时间:2024/06/05 15:10
public abstract class OneLayoutBaseAdapter<T> extends BaseAdapter { private Context context; private List<T> datas; private int resid; public OneLayoutBaseAdapter(Context context, int resid) { this.context = context; this.resid = resid; datas=new ArrayList<>(); } public void setDatas(List<T> datas) { this.datas = datas; this.notifyDataSetChanged(); } public void addDatas(List<T> datas){ this.datas.addAll(datas); this.notifyDataSetChanged(); } public T getDatas(int position){ return datas.get(position); } @Override public int getCount() { return datas==null?0:datas.size(); } @Override public Object getItem(int i) { return datas.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View contentView, ViewGroup parent) { ViewHolder viewHolder=null; if(contentView==null){ contentView= LayoutInflater.from(context).inflate(resid,null); viewHolder=new ViewHolder(contentView); contentView.setTag(viewHolder); }else { viewHolder= (ViewHolder) contentView.getTag(); } bindView(viewHolder,datas.get(i)); return contentView; } public abstract void bindView(ViewHolder viewHolder,T datas); public class ViewHolder{ View layoutView; SparseArray<View> sparseArray=new SparseArray<>(); public ViewHolder(View layoutView) { this.layoutView = layoutView; } public View getView(int id){ View view=sparseArray.get(id); if(view==null){ view=layoutView.findViewById(id); sparseArray.put(id,view); } return view; } public ViewHolder bindTextView(int id,String value){ TextView textView= (TextView) getView(id); textView.setText(value); return this; } public ViewHolder bindImageView(int id,String URL){ ImageView imageView= (ImageView) getView(id); Glide.with(context).load(URL).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView); return this; } }}
以上基类适配器,直接继承就ok了,示例:
public class FriendListAdapter extends OneLayoutBaseAdapter<String> { public FriendListAdapter(Context context) { super(context, R.layout.item_friendlist); } @Override public void bindView(ViewHolder viewHolder, String datas) {// TextView tv_friendname= (TextView) viewHolder.getView(R.id.tv_friendname); viewHolder.bindTextView(R.id.tv_friendname,datas); }}示例中的Sting 就是基类中的T,表示数据实体类;
阅读全文
0 0
- android list单一布局 万能基类适配器
- Android万能适配器基类
- Android适配器-附万能适配器工具类
- 适配器基类--万能适配器(BaseAdapter)
- Android 万能适配器
- Android-打造万能适配器
- Android万能适配器
- Android中万能适配器
- Android 万能适配器
- Android--ListView--万能适配器
- Android 万能适配器
- Android 打造万能适配器
- Android万能适配器
- android打造万能适配器
- Android 万能适配器
- Android Dialog万能适配器
- android万能适配器之SuperAdapter
- Android打造ListView万能适配器
- 自定义View带箭头的圆环,加速 减速 暂停 变色
- 深度学习岗位面试问题一览
- Python3 模块概念的引入
- 【SSM框架】Spring集成Dubbo服务(附带源码)
- mac更新系统后Git不能用,提示missing xcrun at
- android list单一布局 万能基类适配器
- Python的__name__属性妙用
- 从原理上理解NodeJS的适用场景
- vi编辑器如何去除掉开头的#号
- Kubernetes对象之Volume
- ffmpeg 错误系统
- Python的dir()函数
- 下拉菜单从数据库读取数据动态生成
- 十条jQuery代码片段助力Web开发效率提升