Android学习笔记之 SimpleAdapter 中添加按钮响应事件,getView的重写

摘要:
˃˃Data,intersource,String[]from,int[]to){super;//TODOAuto生成的构造函数存根}}上面的代码所做的是单击列表头以删除该项。请注意,删除后必须使用notifyDataSetChanged更新列表。因为继承SimpleAdapter已经使用super实现了公共控制数据的绑定功能。getView可以直接获取列表项的索引。接下来,为ListView中每个项目的按钮添加事件。单击按钮时,按钮事件需要知道单击了ListView的哪个项目。您可以向每个Button对象添加标记。这里我们使用列表视图的项目位置索引作为标记。关于setTag和getTag:视图中的setTag表示向视图添加了额外的数据。您可以稍后使用getTag()检索此数据。
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的重写》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Redis时延问题分析及应对redux入门学习下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jquery设置控件位置的方法

纯JS写法,代码如下: document.getElementById("child").style.left="800px";document.getElementById("child").style.top="200px";*/ //offset()获取当前元素基于浏览的位置var offsettop=$("#unamespan").offset(...

第二百零七节,jQuery EasyUI,MenuButton(菜单按钮)组件

jQuery EasyUI,MenuButton(菜单按钮)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 MenuButton(菜单按钮)组件的使用方法,这个组件依赖于 Menu(菜单)组件和 LinkButton(按钮)组件。 一.加载方式 class 加载方式 <a href="javascr...

Dialog 使用详解

极力推荐文章:欢迎收藏Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 简单对话框 多选按钮对话框 单选按钮对话框 列表对话框 水平进度条对话框 圆形进度条对话框 自定义图文对话框 自定义输入对话框 自定义样式对话...

让两个子div重叠在一起的实现

需求:   需要添加两个div,鼠标未移上是显示第一个,鼠标移上后,显示出来第二个半透明的。这两个div在同一位置上。 实现: 第一步:最外面包围的div Html代码: <div class="Main"> </div> CSS代码:     .Main{        220px;        height: 120px;  ...

Windows App开发之应用布局与基本导航

简单示例看页面布局和导航 首先按照上一篇博客中的顺序来新建一个项目。新建好之后就点开MainPage.xaml开始敲代码了。 <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions>...

Android Service和广播

前言: 我们都知道Android的四大基本组件:Activity、ContentProvider、Service以及BroadcastReceiver,前面的两个我们在前几篇已经具体讲解了,今天这一天我们就把后两者的使用具体说一下,由于Service和BroadcastReceiver常常一起使用,所以我们一起来学习。     一.Service的使用 S...