本次代码是利用ListView+CheckBox批量删除item
利用CheckBox选中一个或多个item,最后一起删除它们...... OK
下面是程序运行效果图:
程序刚打开时是左图的效果 打开菜单点击“批量删除”,CheckBox出现出现的是右图效果,然后你可以点选要删除的项,最后单击菜单“确定删除” 就删除你所选中的所有item
下面开始上码:
package 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); } }还有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"
/>
</RelativeLayout>
</LinearLayout>