万能ListView Adapter
2016-04-04 21:44
381 查看
//抽象封装ViewHolder
public class MyViewHolder {
private SparseArray<View> mViews;
private View mconvertView;
public MyViewHolder(Context context, int layoutId) {
super();
mViews = new SparseArray<View>();
this.mconvertView = View.inflate(context, layoutId, null);
mconvertView.setTag(this);
}
public static MyViewHolder getHolder(Context context, View convertView,
int layoutId) {
if (convertView == null) {
return new MyViewHolder(context, layoutId);
} else {
return (MyViewHolder) convertView.getTag();
}
}
public View getView(int ViewID) {
View view = mViews.get(ViewID);
if (view == null) {
view = mconvertView.findViewById(ViewID);
mViews.put(ViewID, view);
}
return view;
}
public View getConvertView() {
return mconvertView;
}
}
//adapter
public abstract class MyAdapter<T> extends BaseAdapter {
private Context context;
private ArrayList<T> data;
private int layoutId;
public MyAdapter(Context context, ArrayList<T> data, int layoutId) {
super();
this.context = context;
this.data = data;
this.layoutId = layoutId;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
@Override
public T getItem(int arg0) {
// TODO Auto-generated method stub
return data.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyViewHolder holder = MyViewHolder.getHolder(context, convertView,
layoutId);
convert(holder, getItem(position));
return holder.getConvertView();
}
public abstract void convert(MyViewHolder holder, T bean);
}
//使用方法
list_view = (ListView) findViewById(R.id.list_view);
list_view.setAdapter(new MyAdapter<Bean>(MainActivity.this, data,
R.layout.item) {
@Override
public void convert(MyViewHolder holder, Bean bean) {
TextView title = (TextView) holder.getView(R.id.title);
title.setText(bean.getTitle());
TextView desc = (TextView) holder.getView(R.id.desc);
desc.setText(bean.getDesc());
TextView time = (TextView) holder.getView(R.id.time);
time.setText(bean.getTime());
TextView phone = (TextView) holder.getView(R.id.phone);
phone.setText(bean.getPhone());
}
});
public class MyViewHolder {
private SparseArray<View> mViews;
private View mconvertView;
public MyViewHolder(Context context, int layoutId) {
super();
mViews = new SparseArray<View>();
this.mconvertView = View.inflate(context, layoutId, null);
mconvertView.setTag(this);
}
public static MyViewHolder getHolder(Context context, View convertView,
int layoutId) {
if (convertView == null) {
return new MyViewHolder(context, layoutId);
} else {
return (MyViewHolder) convertView.getTag();
}
}
public View getView(int ViewID) {
View view = mViews.get(ViewID);
if (view == null) {
view = mconvertView.findViewById(ViewID);
mViews.put(ViewID, view);
}
return view;
}
public View getConvertView() {
return mconvertView;
}
}
//adapter
public abstract class MyAdapter<T> extends BaseAdapter {
private Context context;
private ArrayList<T> data;
private int layoutId;
public MyAdapter(Context context, ArrayList<T> data, int layoutId) {
super();
this.context = context;
this.data = data;
this.layoutId = layoutId;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
@Override
public T getItem(int arg0) {
// TODO Auto-generated method stub
return data.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyViewHolder holder = MyViewHolder.getHolder(context, convertView,
layoutId);
convert(holder, getItem(position));
return holder.getConvertView();
}
public abstract void convert(MyViewHolder holder, T bean);
}
//使用方法
list_view = (ListView) findViewById(R.id.list_view);
list_view.setAdapter(new MyAdapter<Bean>(MainActivity.this, data,
R.layout.item) {
@Override
public void convert(MyViewHolder holder, Bean bean) {
TextView title = (TextView) holder.getView(R.id.title);
title.setText(bean.getTitle());
TextView desc = (TextView) holder.getView(R.id.desc);
desc.setText(bean.getDesc());
TextView time = (TextView) holder.getView(R.id.time);
time.setText(bean.getTime());
TextView phone = (TextView) holder.getView(R.id.phone);
phone.setText(bean.getPhone());
}
});
相关文章推荐
- Android基础部分再学习---全面理解Fragment
- 全屏滚动
- 放个大招,招聘的招
- C++公有继承
- SSH:Struts + Spring + Hibernate 轻量级Java EE企业框架
- GRUB安装配置及应用
- 温水煮青蛙的安逸感
- 特征选择方法学习笔记
- 俄罗斯方块的源码实现
- Halcon与Opencv图像数据格式转换
- ccf csp 201312-4 有趣的数
- iOS开发学习笔记——页面滚动(UIPageControl)、(时间)选择器(UIPicker)
- Android studio 百度地图开发(6)Marker绑定事件、计算两点距离
- 二维码的生成细节和原理
- hoj1556 Color the ball
- 懒得优化了,字符串截取和重复字符串计数
- request.getHeader("referer")的作用
- Theme
- 【算法学习】双调欧几里得旅行商问题(动态规划)
- win7设置自动关机