利用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. crontab命令使用文档.txt

    基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...

  2. discuz 文件模板edit

    1.修改title Power by discuz! 位置:template/default/common   --->header_common.htm 2.discuz.htm 文件路径(修 ...

  3. chrome版本与对应的chromedriver驱动【转载】

    chrome版本与对应的谷歌驱动(chromedriver) 1.下载chromedriver:http://chromedriver.storage.googleapis.com/index.htm ...

  4. guava EventBus 消息总线的运用

    public class Test { public static void main(String[] args) { final EventBus eventBus = new EventBus( ...

  5. 面试题之发散思维能力:如何用非常规方法求1+2+···+n

    今天在<剑指offer>里看到了下面这样一个简单且有趣的题,考察程序员的发散思维能力,前提是你对C++相关知识点熟悉,否则是想不出来方案的,分享给大家.   题目:求1+2+···+n,要 ...

  6. 使用ssh-keygen生成ssh公钥和私钥

    默认是在用户目录下: windows一般为 c:\User\username\.ssh下 linux一般为 /home/username/.ssh 生成的命令如下: ssh-keygen -t rsa ...

  7. study design of ADNI

    AD(Alzheimer’s disease):不可逆的神经退化,患病人员会由于脑部问题的恶化而导致心智功能不健全. ADNI:阿尔茨海默氏症神经成像项目 ADNI的总体目标是验证用于阿尔茨海默病临床 ...

  8. Unity3D学习笔记第一课

    第一课程:1.Unity类名必须与文件名保持一致2.讲属性设置为public可以在Unity中访问 public float speed; // Use this for initialization ...

  9. 通过这些示例快速学习Java lambda语法

    对于那些不熟悉函数式编程的人来说,基本的Java lambda语法起初可能有点令人生畏.但是,一旦将lambda表达式分解为它们的组成部分,语法很快就会变得有意义并变得非常自然. Java中lambd ...

  10. java8 集合神操作

    public class StreamUtils { private static final List<Integer> listInteger = Lists.newArrayList ...