利用ListView批量删除item

本次代码是利用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>

原创代码,仅供参考.....有什么意见请多指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值