代码主要利用ListView+CheckBox批量删除item,利用CheckBox选中一个或多个item,点击确定删除所眩
程序刚打开时的效果图:
打开菜单点击 批量删除 ,CheckBox出现的是下图效果,然后选择需要删除的项,最后单击菜单 确定删除就删除你所选中的所有item。
开始上代码:
listpackage com.test.adapter;
import java.util.ArrayList;
import java.util.Iterator;
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.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class ArrayAdapterActivity extends ListActivity {
/** Called when the activity is first created. */
private ArrayList<String> strList = new ArrayList<String>();
private ArrayList<Integer> idList = new ArrayList<Integer>();
private ListVIewAdapter ladapter;
boolean visflag = false;
ListView lv;
static String str[] = { "苹果", "香蕉", "桔子", "猕猴桃", "李子", "甘蔗", "荔枝", "桃子",
"香瓜", "葡萄", "哈密瓜", "桂圆", "龙眼" };
CheckBox cb;
{
for (int i = 0; i < str.length; i++) {
strList.add(i, str[i]);
}
}
@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) {
Toast.makeText(ArrayAdapterActivity.this, "位置:" + position,
Toast.LENGTH_SHORT).show();
}
});
}
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(int position, View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
final int pos = position;
if (convertView == null) {
System.out.println("convertView==null");
convertView = mInflater.inflate(R.layout.list_item, null);
}
holder.tv = (TextView) convertView.findViewById(R.id.textView);
holder.cb = (CheckBox) convertView.findViewById(R.id.checkBox);
holder.tv.setText(strList.get(position));
holder.cb.setChecked(false);
System.out.println("setText:" + position);
holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked && (!idList.contains(pos))) {
idList.add(pos);
} else {
if (idList.contains(pos)) {
idList.remove(Integer.valueOf(pos));
}
}
System.out.println(idList.toString());
Toast.makeText(ArrayAdapterActivity.this, "id:" + pos,
Toast.LENGTH_SHORT).show();
}
});
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 == true) {
visflag = false;
idList.clear();
} else {
visflag = true;
}
this.ladapter.notifyDataSetInvalidated();
break;
}
case 1: // 确定删除
{
if (idList.size() > 0) {
for (Integer in : idList) {
System.out.println("下面确定删除 in" + in);
strList.set(in, "-1");
}
Iterator it = strList.iterator();
while (it.hasNext()) {
String ss = (String) it.next();
if (ss.trim().equals("-1")) {
it.remove();
}
}
idList.clear();
this.ladapter.notifyDataSetChanged();
}
break;
}
}
return super.onOptionsItemSelected(item);
}
}_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"
/>
</RelativeLayout>
</LinearLayout>