以下是效果图:
直接贴出Activity的代码:
package com.zhjy.listviewitemremove;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* huangxianfeng 2016-11-01
* ListView的Item批量删除
*/
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private ListVIewAdapter ladapter;
private Button mButton1,mButton2;
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);
setContentView(R.layout.activity_main);
init();
}
private void init() {
mListView = (ListView)findViewById(R.id.listview);
mButton1 = (Button)findViewById(R.id.btn1);
mButton2 = (Button)findViewById(R.id.btn2);
mButton1.setOnClickListener(mOnClickListener);
mButton2.setOnClickListener(mOnClickListener);
ladapter = new ListVIewAdapter(this);
mListView.setAdapter(ladapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (visflag) {
ListVIewAdapter.ViewHolder viewHolder = (ListVIewAdapter.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;
}
}
View.OnClickListener mOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn1:
if(visflag) {
visflag = false;
for(int i=0; i<boolList.size();i++) {
boolList.set(i, false);
}
} else {
visflag = true;
}
ladapter.notifyDataSetInvalidated();
break;
case R.id.btn2:
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++;
}
}
}
ladapter.notifyDataSetChanged();
break;
}
}
};
}
activity_main.mxl布局文件(代码):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/relativelayout"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#59BBF8"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="批量删除操作" />
</RelativeLayout>
<ListView
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/relativelayout"
android:layout_marginBottom="60dp">
</ListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<Button
android:id="@+id/btn1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="批量处理" />
<Button
android:id="@+id/btn2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="确定删除" />
</LinearLayout>
</RelativeLayout>
list_item.xml布局文件的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<RelativeLayout
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_marginLeft="20dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="hello" />
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:visibility="gone" />
</RelativeLayout>
</LinearLayout>
以上就是整个项目的主要代码,大家如有什么好的建议,可留言。