通用的ListViewAdapter
来源:互联网 发布:点点客工作 知乎 编辑:程序博客网 时间:2024/06/06 06:54
CommonAdapter.java
public abstract class CommonAdapter<T> extends BaseAdapter{ protected Context mContext; protected LayoutInflater mInflater; protected List<T> mDatas; private int mLayoutId; public CommonAdapter(Context context,int layoutId, List<T> datas) { mContext = context; mDatas = datas; mLayoutId = layoutId; mInflater = LayoutInflater.from(context); } @Override public int getCount() { return mDatas.size(); } @Override public T getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { CommonViewHolder holder = CommonViewHolder.getInstance(mContext, convertView, parent, mLayoutId, position); convert(holder,getItem(position),position); return holder.getConvertView(); } public abstract void convert(CommonViewHolder holder,T bean,int position);}
CommonViewHolder.java
public class CommonViewHolder { private SparseArray<View> mViews; private int mPosition; private View mConvertView; public static CommonViewHolder getInstance(Context context, View convertView, ViewGroup parent, int layoutId, int position) { if (convertView == null) { return new CommonViewHolder(context, parent, layoutId, position); } else { CommonViewHolder holder = (CommonViewHolder) convertView.getTag(); holder.mPosition = position; return holder; } } private CommonViewHolder(Context context, ViewGroup parent, int layoutId, int position) { mPosition = position; mViews = new SparseArray<View>(); mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false); mConvertView.setTag(this); } public View getConvertView() { return mConvertView; } public <T extends View> T getView(int viewId) { View view = mViews.get(viewId); if (null == view) { view = mConvertView.findViewById(viewId); mViews.put(viewId, view); } return (T) view; }}
使用方法
mLv.setAdapter(new CommonAdapter<Integer>(this, R.layout.row_school_or_department_or_year, mYearList) { @Override public void convert(CommonViewHolder holder, Integer year, int position) { // TODO Auto-generated method stub ((TextView) holder.getView(R.id.id_name)).setText(year + ""); }});mLv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { }});
0 0
- 通用的ListViewAdapter
- 分享一个通用的ListViewAdapter和Holder
- Android实现的ListView-ListViewAdapter(新闻列表事例)
- Android 自定义ListViewAdapter
- 通用的DAO雏形
- 通用的分页类
- 通用的连接池
- 通用设计的原则
- 一个通用的Makefile
- 一个通用的Makefile
- 数据库的通用接口
- 木马病毒的通用解法
- 木马病毒的通用解法
- 木马病毒的通用解法
- 木马病毒的通用解法
- 一个通用的Makefile
- 通用的类
- 通用的 LoserTree
- clang: error: no such file or directory: "xxxxxx" clang: error: no input files
- poj-3122-Pie
- sql教师表存储过程
- Linux网络命令-netstat、route、nslookup...
- 猜数字
- 通用的ListViewAdapter
- 第四周项目3-猜数字游戏
- C++实验2-标准体重
- c++实验2——标准体重
- C++实验2-1-标准体重
- windows下架设SVN服务器并设置开机启动
- eclipse安装tomcat报错:The Tomcat installation directory is not valid. It is missing expected file or fol
- [转]Ext Grid控件的配置与方法
- 百钱百鸡问题