2 slaks SLaks 于 2013.09.17 14:43 提问

点击按钮从 ListView中 删除一行

程序中的 ListView 的行包含一些 textviews 和一个按钮。当用户点击按钮时,我想删除父类
并把按钮从 ListView中 删除。如何在一个嵌套的方法(onClickListener)中访问自定义的 ArrayAdapter 的字段?我使用的是 View v。我是否要多次调用 v.getParent(),或者还有什么更好的方法?

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
     ViewHolder holder = null;
     Action item = this.getItem(position);
     if (convertView == null) {
        convertView = inflater.inflate(R.layout.action_holder_layout,
              parent, false);
        holder = new ViewHolder();
        holder.title = (TextView) convertView
              .findViewById(R.id.action_holder_title);
        holder.finishBtn = (Button) convertView
              .findViewById(R.id.finish_action_button);
        convertView.setTag(holder);
     } else
        holder = (ViewHolder) convertView.getTag();
     holder.title.setText(item.getActionName());
     holder.finishBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
           //REMOVE THE ACTION FROM THE ADAPTER'S ARRAYLIST
        }
     });
     return convertView;
  }

  static class ViewHolder {

     private TextView title;
     private Button finishBtn;
  }

2个回答

sasuke38
sasuke38   2013.09.18 11:52
@Override
public int getCount(){
     return null!=list?list.size():0;
}

@Override
  public View getView(int position, View convertView, ViewGroup parent) {
     ViewHolder holder = null;
     Action item = this.getItem(position);
     if (convertView == null) {
        convertView = inflater.inflate(R.layout.action_holder_layout,
              parent, false);
        holder = new ViewHolder();
        holder.title = (TextView) convertView
              .findViewById(R.id.action_holder_title);
        holder.finishBtn = (Button) convertView
              .findViewById(R.id.finish_action_button);
        convertView.setTag(holder);
     } else
        holder = (ViewHolder) convertView.getTag();
     holder.title.setText(item.getActionName());
     holder.finishBtn.setTag(position);
     holder.finishBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
           //REMOVE THE ACTION FROM THE ADAPTER'S ARRAYLIST
           Object tag = v.getTag();
           if(null!=tag){
               list.remove((Integer)tag);
               notifyDataSetChanged();
           }
        }
     });
     return convertView;
  }

  static class ViewHolder {

     private TextView title;
     private Button finishBtn;
  }
qq_34200125
qq_34200125 这里的action是哪个包下的
2 年多之前 回复
usniyo
usniyo   2013.09.25 13:06
@Override
  public View getView(final int position, View convertView, ViewGroup parent) {
     ...
     holder.finishBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
           remove(position);
        }
     });
    ...
  }

  public void remove(int index) {
    // list.remove(index);
    ...
    notifyDataSetChanged();
  }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
listview 中有删除按钮,当点击时删除选中行
xml version="1.0" encoding="utf-8"?>   LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"       android:layout_width="fill_parent"       android:layout_height="fill_parent"  
item带有删除按钮的listview
在item中含有删除按钮,点击删除后删除这一行,并刷新列表重新显示 当时想不出删除后要怎么才能notifyDataSetChanged…… 后来发现就在adapter里直接刷新数据就好。 我实在是太菜了。 在生成数据的时候也遇到问题,像这样 List persons = new ArrayList(); Person person = new Person(); for (int i =
ListView ( item上有按钮可以删除此行 )
出处:www.csdn.net 先看代码 listview3.xml还是老样子 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent
ListView中的item中有删除按钮,点击删除按钮,该item删除。
项目中有这样的需求。在网上找了半天,终于找到一种方法。思路就是在适配器的getView(){}方法中将数据删除,并且在适配器中更新数据。主要代码如下:             currentPosition = position;//记录当前的位置             holder.img_delete.setOnClickListener(new OnClickListener() {
ListView调用按钮删除某一行item
ListView布局包括checkbox(复选框)、img、title(商品名称)、type(分类)、两个Button(加减)、三个textview(原价,单价,数量),imgDelete(delete) xml:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.co
android listview 中点击按钮实现跳转和删除
先来一张效果图,点击右上角的叉实现删除item,点击修改实现跳转到编辑页面。 实现的原理:修改适配中的getview方法,核心代码如下: public View getView(final int position, View convertView, ViewGroup parent) {         // TODO Auto-g
ListView的Item上有Button按钮,点击执行单个Item删除动画
ListView的Item上有Button按钮,点击执行单个Item删除动画 最近项目上有一个动画需要实现,就是ListView的Item上有一个Button,点击每个Item上的Button,当前对应的Item执行一个缩放动画,最终删除掉当前的Item,网上找了很多都是关于加载Item的时候,对Item执行动画,而没有点击的时候执行的例子,现在把我写的例子贴一下,希望以后遇见了可以参考. 注
Android ListView 点击按钮删除对应的 item
今天遇到一个点击item 中按钮删除对应的item的需求,那么问题来了,按钮在Adapter 视图中,按理说点击事件如果在Adapter中实现的话会无法调用自身listView 刷新数据源的方法,好了不多说了,先上效果: 其实我的实现方法就是把删除按钮的点击事件放在对应的Activity中实现,那么问题又来了,我们怎么知道点击的是哪个item中的按钮?后来我发现一个神奇的东西 tag ,
ListView删除item时总是删除最后一条数据!
当自己遇到这个问题的时候百度了一下,确只百度到一条类似信息,也没有给出具体方案,所以在此记录,希望帮助和我一样菜的程序员,互勉! ListView在删除item的时候,我看了一下传入的下标是正常的,并且通过测试删除的条目也是正确的,可是界面显示确总是删除最后一条,在百度多条信息之后,被告知,其实删除的item是正确的,只是界面刷新总是删除最后一条,具体的解决方案: 说是应该调用listItem
WPF ListView点击删除某一行并获取绑定数据
最近在开发WPF程序时遇到一个问题,在gridview中希望实现在每一行最后添加一个删除的按钮,但是发现点击每行的button时只会触发button的点击事件,并没有选中这一行,此时调用list.SelectedItem时无法得到对应的绑定数据。UI.xaml<ListView x:Name="list" Height="494" Width="1121" FontSize="16" > <Lis