Android使用ListView批量删除item的方法
作者:manymore13 时间:2022-05-01 01:11:17
本文实例讲述了Android使用ListView批量删除item的方法。分享给大家供大家参考,具体如下:
利用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>
希望本文所述对大家Android程序设计有所帮助。
标签:Android,ListView
0
投稿
猜你喜欢
基于C#实现的仿windows左侧伸缩菜单效果
2023-01-22 18:44:54
Spring中@Scheduled和HttpClient的连环坑
2023-10-19 23:06:00
基于Java SWFTools实现把pdf转成swf
2023-09-01 20:19:02
JDK8中新增的原子性操作类LongAdder详解
2023-06-19 22:02:58
Java 前台加后台精品图书管理系统的实现
2023-10-23 04:06:47
C#中实现任意List的全组合算法代码
2022-09-23 01:06:48
C#用Activex实现Web客户端读取RFID功能的代码
2021-10-28 21:07:36
Android客户端post请求服务器端实例
2022-10-10 23:49:43
Java8如何使用Lambda表达式简化代码详解
2023-02-20 04:44:58
springBoot 打war包 程序包com.sun.istack.internal不存在的问题及解决方案
2023-03-28 06:12:40
java开发RocketMQ之NameServer路由管理源码分析
2023-10-27 20:56:12
深度理解C语言中的关键字static
2023-03-12 02:47:37
add方法理解ArrayList的扩容机制
2023-11-24 02:16:28
Java微信公众平台开发(12) 微信用户信息的获取
2023-05-26 07:28:56
基于动态修改App.Config与web.Config的使用详解
2021-07-19 12:09:27
Mybatis-Spring源码分析图解
2023-07-18 13:35:07
浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解
2021-05-30 02:56:55
Java BeanPostProcessor与BeanFactoryPostProcessor基础使用讲解
2022-10-25 21:52:35
android使用AsyncTask实现多线程下载实例
2023-02-02 16:30:04
Flutter自定义底部导航栏的方法
2022-01-10 15:48:33