Android通用数据适配器源码CommonAdapter
来源:互联网 发布:投稿网站源码 编辑:程序博客网 时间:2024/05/16 17:07
import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import java.util.ArrayList;/** * Created by capton on 2017/6/19. */public abstract class CommonAdapter<T> extends BaseAdapter { public Context context; private ArrayList<T> dataList; private int resId; public CommonAdapter(Context context,ArrayList<T> dataList,int resId) { this.context = context; this.resId=resId; this.dataList = dataList; } @Override public int getCount() { return dataList.size(); } @Override public Object getItem(int position) { return dataList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent){ ViewHolder viewHolder=ViewHolder.bind(context,convertView,parent,resId,position); bindView(viewHolder, (T) getItem(position)); return viewHolder.getItemView(); } public abstract void bindView(ViewHolder viewHolder,T obj); public void add(T t){ dataList.add(t); notifyDataSetChanged(); } public void add(T t,int index){ dataList.add(index,t); notifyDataSetChanged(); } public void remove(T t){ dataList.remove(t); notifyDataSetChanged(); } public void remove(int index){ dataList.remove(index); notifyDataSetChanged(); } public static class ViewHolder { private Context context; private View convertView; private int position; private SparseArray<View> mViews; private ViewHolder(Context context,ViewGroup parent,int layoutRes){ mViews=new SparseArray<>(); this.context=context; convertView=LayoutInflater.from(context).inflate(layoutRes,parent,false); convertView.setTag(this); } public static ViewHolder bind(Context context,View convertView,ViewGroup parent,int layoutRes,int position){ ViewHolder viewHolder; if(convertView==null){ viewHolder=new ViewHolder(context,parent,layoutRes); }else { viewHolder= (ViewHolder) convertView.getTag(); viewHolder.convertView=convertView; } viewHolder.position=position; return viewHolder; } public ViewHolder setText(int id,CharSequence text){ View textView=getView(id); if(textView instanceof TextView){ ((TextView)textView).setText(text); } return this; } public ViewHolder setImageResource(int id,int drawableRes){ View imageView=getView(id); if(imageView instanceof ImageView){ ((ImageView)imageView).setImageResource(drawableRes); }else { imageView.setBackgroundResource(drawableRes); } return this; } public ViewHolder setImageUrl(int id,String url){ View imageView=getView(id); if(imageView instanceof ImageView){ Glide.with(context).load(url).into(((ImageView)imageView)); } return this; } public ViewHolder setOnClickListener(int id,View.OnClickListener listener){ getView(id).setOnClickListener(listener); return this; } public ViewHolder setTag(int id,Object obj){ getView(id).setTag(obj); return this; } public <T extends View> T getView(int id){ T t= (T) mViews.get(id); if(t==null){ t= (T) convertView.findViewById(id); mViews.put(id,t); } return t; } public View getItemView(){ return convertView; } }}
阅读全文
0 0
- Android通用数据适配器源码CommonAdapter
- Android通用适配器CommonAdapter
- Android万能适配器CommonAdapter的源码分析
- 万能适配器 CommonAdapter
- ListView万能适配器CommonAdapter
- 万能适配器CommonAdapter和ViewHolder
- 万能适配器(2) 抽取CommonAdapter
- listView的简化适配器commonAdapter
- android 通用适配器
- Android通用适配器
- Android通用适配器
- Android RecyclerView通用适配器
- Android Listview通用适配器
- android RecyclerView 通用适配器
- Android自定义通用适配器
- Android自定义通用适配器
- android中继承BaseAdapter实现DataAdapter通用数据适配器
- android开发之继承BaseAdapter实现通用数据适配器
- Linux基础(六)
- (配置环境问题)svn插件和eclipse 整合不成功
- java中equals的注意事项
- 高级排序算法
- ANTLR4在windows上的安装(Python3版)
- Android通用数据适配器源码CommonAdapter
- 08,Lua table构造式
- URL有中文乱码(已解决)
- 草根学Python(二)基本数据类型和变量
- 什么是Tomcat以及Tomcat使用方法
- 大数据-十六
- Android之解决Base64 encode中文乱码问题
- python结合mongodb处理阿里大数据文件
- 获取Document对象