Android——继承SimpleAdapter重写自己的getView
来源:互联网 发布:安利产品淘宝数据包 编辑:程序博客网 时间:2024/05/04 04:18
在上篇Android——ListView实现简单列表 中,利用SimpleAdapter实现了简单的列表绑定。在本文中,主要是通过重写getView方法,来看下adapter内部绑定数据大致是个什么流程。
首先加入实现类:
class mTestAdapter extends SimpleAdapter {private Context context; /*运行环境*/ArrayList<HashMap<String, String>> listItem; /*数据源*/private LayoutInflater listContainer; // 视图容器 class ListItemView { // 自定义控件集合public TextView txtName;} /*construction function*/public mTestAdapter(Context context, ArrayList<HashMap<String, String>> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); this.listContainer = LayoutInflater.from(context); // 创建视图容器并设置上下文 this.context=context; listItem=data; } /** * @see android.widget.Adapter#getCount() */ public int getCount() { return listItem.size(); } /** * @see android.widget.Adapter#getItem(int) */ public Object getItem(int position) { return listItem.get(position); } /** * @see android.widget.Adapter#getItemId(int) */ public long getItemId(int position) { return position; } @Overridepublic View getView(int position, View convertView, ViewGroup parent) {final int mPosition = position; ListItemView listItemView = null;if (convertView == null) {convertView = listContainer.inflate(R.layout.listview_item, null);//加载布局listItemView = new ListItemView();/*初始化控件容器集合*/listItemView.txtName=(TextView) convertView.findViewById(R.id.name); // 设置控件集到convertViewconvertView.setTag(listItemView);}else{listItemView=(ListItemView)convertView.getTag();//利用缓存的View}/* * PS: * 这里放入对控件的属性及事件进行初始化设置的操作 * *//*TextView设置点击事件*/ listItemView.txtName.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "点击了"+mPosition, Toast.LENGTH_SHORT).show(); } }); //设置text的值(用position标记来看的更清楚点儿) listItemView.txtName. setText(mPosition+" "+listItem.get(mPosition).get("ItemName"));return convertView;}}}
我们用这个实现类来取代我们之前用的SimpleAdapter.
mTestAdapter listItemAdapter=new mTestAdapter(getBaseContext(),/*指明了SimpleAdapter关联的View的运行环境,也就是当前的Activity*/listItem,/*由Map组成的List,在List中的每条目对应ListView的一行,每一个Map中包含的就是所有在from参数中指定的key*/R.layout.listview_item,/*定义列表项的布局文件的资源ID,该资源文件至少应该包含在to参数中定义的ID*/new String[]{"ItemName"},/*将被添加到Map映射上的Key*/new int[] {R.id.name}/*将绑定数据的视图的Id跟from参数对应,这些被绑定的视图元素应该全是TextView*/);//设置适配器
之后,run下,看看我们加的toast:
发现点击事件加上了,而且通过position,很容易区分我们当前到底操作的时候那个item,并可以针对这个Item进行有针对的操作。尤其是当item上面有button的时候,重写Adapter就显得比较简单了。
5 0
- Android——继承SimpleAdapter重写自己的getView
- 【Android基础篇】重写SimpleAdapter的getView以实现按钮点击响应
- 重写SimpleAdapter的getView以实现按钮点击响应
- Android 重写BaseAdapter中的getView
- android的listview getview重写 inflate的使用
- android listView 重写Adapter方法getView的性能优化问题
- ListView使用SimpleAdapter,或者继承BaseAdapter重写
- (柯昌合深入研究Android SimpleAdapter BaseAdapter 的getView(int position, View convertView, ViewGroup parent)
- [置顶] (柯昌合深入研究Android SimpleAdapter BaseAdapter 的getView(int position, View convertView, ViewGroup pa
- 【android学习笔记】自定义Adapter继承BaseAdapter获取不到getview或者getview不执行的问题
- 【android学习笔记】自定义Adapter继承BaseAdapter获取不到getview或者getview不执行的问题
- 【android学习笔记】自定义Adapter继承BaseAdapter获取不到getview或者getview不执行的问题
- android-继承BaseAdapter--自定义适配器,getView执行多次的解决方法
- android-继承BaseAdapter自定义适配器,getView执行多次的解决方法
- listview的重写方法getview的优化
- 关于Adapter中getView的重写方法
- 重写BaseAdapter后getView的模版
- 关于ListView中继承BaseAdapter重写getview的显示重复数据或报转换错误的问题
- jquery的$.extend和$.fn.extend作用及区别
- AI CDR 对象间互操作
- RoutedEventArgs的Source与OriginalSource
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener为什么找不到?
- Layer.date 时间插件 JS日期时间插件
- Android——继承SimpleAdapter重写自己的getView
- jQuery常用的元素查找方法总结
- 【iOS】系统地图MapKit服务
- executeQuery和executeUpdate之间的区别
- git 学习系列之一:快速入门
- java中的数组
- PostgreSQL的hstore初步学习
- AI字体处理
- newinstance()和new有什么区别?