Andriod 里面的ListView是一个显示列表数据的控件,常用适配器SimpleAdapter进行绑定,绑定代码如下:
ListView lstView = (ListView) this.findViewById(R.id.listView1);
SimpleAdapter adapter=new SimpleAdapter(context, data, resource, from, to);
lstView.setAdapter(adapter);
ListView 列表中的元素的单击事件响应:
OnItemClickListener mItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
}
};
listView.setOnItemClickListener(mItemClickListener);

对于Button ,ImageButton这样的按钮控件实现单事件,接下来我们看看如何实现这样的功能:

继承SimpleAdapter进行重写getView方法

为什么不继承BaseAdapter适配器进行处理,因为BaseAdapter是一个非常基础的基类,对于一般的TextViwe ,ImageView,Button控件的数据绑定都没有实现

java代码:

private class MySimpleAdapter extends SimpleAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = super.getView(position, convertView, parent); ImageButton btn=(ImageButton) v.findViewById(R.id.icon);
btn.setTag(position);
btn.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub mDataList.remove((int)v.getTag());
notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "µ¥»÷ÎÒÁË"+v.getTag(), 1).show(); }
});
return v;
} public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
// TODO Auto-generated constructor stub
}
}

上面代码实现的是,点击列表头像删除该项。注意在删除之后必须用notifyDataSetChanged更新列表。

因为继承SimpleAdapter已经实现了常用控件数据的绑定功能,使用super.getView(position, convertView, parent)就可以直接得到一个列表项的索引,接下来就是为ListView的每一项的Button添加事件。

当单击某个按钮时,按钮事件需要知道单击的是ListView的哪一项,可以为每个Button对象添加一个Tag,我们这里用listview的项position的索引作为tag。

关于setTag和getTag:

View中的setTag(Onbect)表示给View添加一个格外的数据,以后可以用getTag()将这个数据取出来。

可以用在多个Button添加一个监听器,每个Button都设置不同的setTag。这个监听器就通过getTag来分辨是哪个Button 被按下。

 

Android学习笔记之 SimpleAdapter 中添加按钮响应事件,getView的重写的更多相关文章

  1. [学习笔记] 在Eclipse中添加用户库 Add User Libraries ,在项目中引用用户库

    如果还没有安装Eclipse, 则请参考前文:  [学习笔记] 下载.安装.启动 Eclipse(OEPE) 添加用户库 本文主要介绍在项目中直接使用第三方库的情况.就是把第三方的jar文件直接放到某 ...

  2. 转 Android学习笔记: 学习过程中碰到的一些问题及解决方法

    在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决.现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下. 1.R.java不能实时更新 问题描 ...

  3. Android 学习笔记四:创建工具栏按钮

    原文:http://blog.csdn.net/lihongxun945/article/details/48951199 前面我们已经可以在一个Activity中添加一些按钮之类的组件.由于手机的屏 ...

  4. Android学习笔记_67_Android MyCrashHandler 中异常处理 UncaughtExceptionHandler

    1.程序中故意抛出异常: public class ExceptionActivity extends Activity { String str; @Override public void onC ...

  5. 【转】Pro Android学习笔记(七):了解Content Provider(下上)

    我们通过一个Content Provider小例子进行详细说明.数据源是一个SQLite数据库,名字为books.db,该数据库只含有一个表格,名字为books.表格中含有name,isbn,auth ...

  6. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  7. Android学习笔记之Activity详解

    1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...

  8. udacity android 学习笔记: lesson 4 part b

    udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...

  9. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

随机推荐

  1. JavaScript模板引擎实例应用(转)

    本文将举实例向大家讲解几个常用模板引擎的简单使用. 演示地址:模板引擎示例http://demo.52fhy.com/jstemp/ 准备工作 演示数据:blog.json结构: { "li ...

  2. H5C3--边框阴影box-shadow

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. cmd下带参数执行python文件

    在一个文件下下创建程序代码,     sys.argv 即后续cmd中需要传入的参数列表,     sys.argv[0]即要执行的文件名     sys.argv[n]即参数的字符串 # -*- c ...

  4. GIT → 11:Git 工作流与实战演练

    GIT → 11:Git 工作流与实战演练

  5. 学习JDK1.8集合源码之--HashMap

    1. HashMap简介 HashMap是一种key-value结构存储数据的集合,是map集合的经典哈希实现. HashMap允许存储null键和null值,但null键最多只能有一个(HashSe ...

  6. Flask – SQLAlchemy成员增加

    目录 简介 结构 展示 技术 运行 代码 创建数据库表单 views视图 home主页 添加成员addnew.html 展示页show_all 简介 结构 $ tree -I "__pyca ...

  7. Vue2.0史上最全入坑教程(上)—— 搭建Vue脚手架(vue-cli)

    ps: 想了解更多vue相关知识请点击VUE学习目录汇总 Vue作为前端三大框架之一截至到目前在github上以收获44,873颗星,足以说明其以悄然成为主流.16年10月Vue发布了2.x版本,经过 ...

  8. Session学习小结

    前言: 1.我们在学习一项技术的时候,首先应该是什么时候会用到这项技术.这次学习session也是如此,一般的web项目中都有用户的存在,有用户那么就有了用户的管理,而用户往往是存在于session中 ...

  9. etree不存在解决方法

    from lxml import html text=xxx//测试的html文本 etree = html.etree htmlDiv = etree.HTML(text) title = html ...

  10. PHP的生成图片或文字水印的类

    ImageWatermark.php <?php /*********************************************************** 类名:ImageWat ...