利用CheckBox选中一个或多个item,最后批量删除它们。

程序运行效果图如下:

package com.test.adapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast; import com.test.adapter.ArrayAdapterActivity.ListVIewAdapter.ViewHolder; /**
* ListView 批量删除Item
* @author manymore13
*
*/
public class ArrayAdapterActivity extends ListActivity { private ListVIewAdapter ladapter;
private List<String> strList = new ArrayList<String>();
private List<Boolean> boolList = new ArrayList<Boolean>(); boolean visflag = false;
ListView lv;
static String str[] ={"1苹果","2香蕉","3桔子","4猕猴桃","5李子","6甘蔗","7荔枝","8桃子","9香瓜","10葡萄","11哈密瓜","12桂圆","13龙眼","14","15","16","17","18","19","20"};
CheckBox cb;
{
for(int i=0;i<str.length;i++)
{
strList.add(str[i]);
boolList.add(false);
}
} @Override
protected void onCreate(Bundle savedInstanceState)
{ super.onCreate(savedInstanceState); ladapter = new ListVIewAdapter(this); lv = this.getListView();
lv.setAdapter(ladapter); lv.setScrollBarStyle(1); lv.setOnItemClickListener(new OnItemClickListener()
{ @Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id)
{
if(visflag)
{
ViewHolder viewHolder = (ViewHolder) view.getTag();
viewHolder.cb.toggle();
if(viewHolder.cb.isChecked())
{ boolList.set(position, true);
}else{
boolList.set(position, false);
}
}
}
}); } class ListVIewAdapter extends BaseAdapter
{ Context c;
LayoutInflater mInflater ;
ListVIewAdapter(Context context)
{
c = context;
mInflater = getLayoutInflater();
}
@Override
public int getCount()
{
return strList.size();
} @Override
public Object getItem(int position)
{
return strList.get(position);
} @Override
public long getItemId(int position)
{
return position;
} @Override
public View getView(final int position, View convertView,
ViewGroup parent)
{
ViewHolder holder = null ;
if(convertView == null)
{ holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list_item, null);
holder.tv = (TextView)convertView.findViewById(R.id.textView);
holder.cb = (CheckBox)convertView.findViewById(R.id.checkBox);
convertView.setTag(holder); }else{
holder = (ViewHolder) convertView.getTag();
}
holder.tv.setText(strList.get(position));
holder.cb.setChecked(boolList.get(position)); if(visflag)
{
holder.cb.setVisibility(View.VISIBLE);
}
else
{
holder.cb.setVisibility(View.INVISIBLE);
} return convertView;
}
class ViewHolder
{
TextView tv;
CheckBox cb;
} } @Override
public boolean onCreateOptionsMenu(Menu menu)
{ menu.add(0, 0, 0, "批量处理");
menu.add(0, 1, 0, "确定删除");
return super.onCreateOptionsMenu(menu);
} @Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case 0: // 批量处理
{
if(visflag)
{
visflag = false;
for(int i=0; i<boolList.size();i++)
{
boolList.set(i, false);
}
}
else
{
visflag = true;
}
this.ladapter.notifyDataSetInvalidated();
break;
}
case 1: //确定删除
{
if(boolList.size()>0)
{
if(visflag)
{
for(int location=0; location<boolList.size(); )
{
if(boolList.get(location))
{
boolList.remove(location);
strList.remove(location);
continue;
}
location++;
}
} }
this.ladapter.notifyDataSetChanged();
break;
}
}
return super.onOptionsItemSelected(item);
} }

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:visibility="gone"
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
/>
</RelativeLayout>
</LinearLayout>

利用ListView批量删除item的更多相关文章

  1. 利用sql批量删除表,存储过程

    利用sql批量删除表,存储过程. 最近用godaddy的空间,由于系统里面的表多,一个个的删除很麻烦,就网上搜集了一下解决方法. 给大家分享一下: 1.批量删除存储过程 declare @procNa ...

  2. WPF Caliburn.Micro ListView 批量删除 新方法.高效的

    上一片我做的批量删除,是更具ListView的选项改变事件,然后放到一个全局变量里面,缺点已经说了.这次又找到一个好的方法.和大家分享一下.这次我将删除按钮的click事件里面的参数绑定为ListVi ...

  3. WPF Caliburn.Micro ListView 批量删除,有其他方法的大家一起交流一下

    做这种批量删除的时候我的想法是获取每行的ID,然后更具ID删除,看过一些博客,大部分都是直接写在.CS文件里面,将ListView和CheckBox关联起来,最后用checkbox ck=sender ...

  4. zabbix利用api批量添加item,并且批量配置添加graph

    关于zabbix的API见,zabbixAPI 1item批量添加 我是根据我这边的具体情况来做的,本来想在模板里面添加item,但是看了看API不支持,只是支持在host里面添加,所以我先在一个ho ...

  5. 在spring mvc中利用ajax批量删除数据

    1.前台代码: $("#batchdelete").click(function(){ $.ajax({ type: "post", url: url, dat ...

  6. Android 长按Listview显示CheckBox,实现批量删除。

    ListView实现的列表,如果是可编辑,可删除的,一般都要提供批量删除功能,否则的话,一项一项的删除体验很不好,也给用户带来了很大的麻烦. 实现效果图 具体实现代码 select.xml 主布局文件 ...

  7. Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果

    本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18311877) 今天还是给大家带来自定义控件的编写,自定义一个Lis ...

  8. 【转】Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果

    原文网址:http://blog.csdn.net/xiaanming/article/details/17539199 转帖请注明本文出自xiaanming的博客(http://blog.csdn. ...

  9. [转]Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果

    转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17539199),请尊重他人的辛勤劳动成果,谢谢! 我在上一 ...

随机推荐

  1. 编写一个c++工程

    c++接触的很少,之前也只是会编写一个简单的cpp文件,但一个工程的实现,往往不仅包括源文件(.cpp后缀文件)一般还有头文件(.h后缀文件)等.一个c++工程中只能有一个main函数,这个函数所在的 ...

  2. ASP.NET Core 1.0 中 EntityFramework 与 PostgreSQL 的使用

    https://docs.efproject.net/en/latest/providers/npgsql/index.html 前面在CentOS6.7环境下配置好了PostgreSQL, 就顺便试 ...

  3. 怎么样imageview实现铺满全屏

    <ImageView android:layout_width="match_parent" android:layout_height="match_parent ...

  4. JavaScript -- Window-Focus

    -----034-Window-Focus.html----- <!DOCTYPE html> <html> <head> <meta http-equiv= ...

  5. vmware workstation 下安装ubuntu

    安装时我是借鉴 https://blog.csdn.net/xiaohua0877/article/details/78507631 期间遇到几个问题 键盘不好使,解决办法是重新运行wmware wo ...

  6. google 被墙的解决办法

    昨晚无意中发现的东西,分享给各位使用,google搜索技术方面的东西还是很准确的,可惜被墙了,但是上有政策下有对策…… 谷歌地址: http://74.125.224.18/ http://91.21 ...

  7. gpexpand分析

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由maxluo发表于云+社区专栏 一. gp扩容步骤 1.1 初始化机器 目标:新增加的机器需要初始化和已有机器环境一样. 具体包括不限 ...

  8. Android性能测试--垃圾回收频次统计的作用

    频繁的垃圾回收有可能暗示着内存泄露,在我手机统计数据,每次垃圾回收会占据100ms左右,这对内存和事件响应要求严格的程序(游戏等)来讲是可观的性能损耗.

  9. 导入maven项目遇到中文乱码

    windows->preferences->content types->word Document 并输入utf-8->update; 右键选中的项目,选择propertie ...

  10. PHP面向对象——类

    <?php/** * Created by PhpStorm. * User: 63448 * Date: 2018/5/6 * Time: 9:44 *///类:相似的数据和数据操作的封装 c ...