全选、反选、删除

xml:

<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:orientation="horizontal" >  
  
    <TextView  
        android:id="@+id/tv"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:layout_gravity="center_vertical" />  
  
    <LinearLayout  
        android:id="@+id/line"  
        android:layout_width="fill_parent"  
        android:layout_height="50dp"  
        android:layout_below="@+id/tv"  
        android:orientation="horizontal" >  
  
        <Button  
            android:id="@+id/bt_selectall"  
            android:layout_width="80dp"  
            android:layout_height="fill_parent"  
            android:text="全选" />  
  
             <Button  
            android:id="@+id/bt_cancleselectall"  
            android:layout_width="80dp"  
            android:layout_height="fill_parent"  
            android:text="反选" />  
               
          
        <Button  
            android:id="@+id/bt_deselectall"  
            android:layout_width="80dp"  
            android:layout_height="fill_parent"  
            android:text="删除" />  
  
    </LinearLayout>  
  
    <ListView  
        android:id="@+id/lv"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:layout_below="@+id/line" />  
  
</RelativeLayout>  

MainActivity.class

package com.example.zhoukao_one1;

import java.util.ArrayList;
import java.util.List;

import com.example.zhoukao_one1.MyAdapter.ViewHolder;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

     private ListView lv;  
        private MyAdapter mAdapter;  
     //   private ArrayList<String> list;  
        private List<User> list;
        private Button bt_selectall;  
        private Button bt_cancel;  
        private Button bt_deselectall;  
        private String[] name=new String[]{"马克思","*格斯","斯大林","***"};
        private int checkNum; // 记录选中的条目数量  
        private TextView tv_show;// 用于显示选中的条目数量  
      
        /** Called when the activity is first created. */  
      
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
            /* 实例化各个控件 */  
            lv = (ListView) findViewById(R.id.lv);  
            bt_selectall = (Button) findViewById(R.id.bt_selectall);  
            bt_cancel = (Button) findViewById(R.id.bt_cancleselectall);  
            bt_deselectall = (Button) findViewById(R.id.bt_deselectall);  
            tv_show = (TextView) findViewById(R.id.tv);  
          //  list = new ArrayList<String>();  
            list=new ArrayList<User>();
            // 为Adapter准备数据  
            initDate();  
            // 实例化自定义的MyAdapter  
            mAdapter = new MyAdapter(list, this);  
            // 绑定Adapter  
            lv.setAdapter(mAdapter);  
      
            // 全选按钮的回调接口  
            bt_selectall.setOnClickListener(new OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                    // 遍历list的长度,将MyAdapter中的map值全部设为true  
                    for (int i = 0; i < list.size(); i++) {  
                        MyAdapter.getIsSelected().put(i, true);  
                    }  
                    // 数量设为list的长度  
                    checkNum = list.size();  
                    // 刷新listview和TextView的显示  
                    dataChanged();  
                }  
            });  
      
            // 反选按钮的回调接口  
            bt_cancel.setOnClickListener(new OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                    // 遍历list的长度,将已选的设为未选,未选的设为已选  
                    for (int i = 0; i < list.size(); i++) {  
                        if (MyAdapter.getIsSelected().get(i)) {  
                            MyAdapter.getIsSelected().put(i, false);  
                            checkNum--;  
                        } else {  
                            MyAdapter.getIsSelected().put(i, true);  
                            checkNum++;  
                        }  
                    }  
                    // 刷新listview和TextView的显示  
                    dataChanged();  
                }  
            });  
      
            // 取消按钮的回调接口  
            bt_deselectall.setOnClickListener(new OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                    // 遍历list的长度,将已选的按钮设为未选  
                    for (int i = 0; i < list.size(); i++) {  
                        if (MyAdapter.getIsSelected().get(i)) {  
                            MyAdapter.getIsSelected().put(i, false);  
                            checkNum--;// 数量减1  
                        }  
                    }  
                    // 刷新listview和TextView的显示  
                    dataChanged();  
                }  
            });  
      
            // 绑定listView的监听器  
            lv.setOnItemClickListener(new OnItemClickListener() {  
                @Override  
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
                        long arg3) {  
                    // 取得ViewHolder对象,这样就省去了通过层层的findViewById去实例化我们需要的cb实例的步骤  
                    ViewHolder holder = (ViewHolder) arg1.getTag();  
                    // 改变CheckBox的状态  
                    holder.cb.toggle();  
                    // 将CheckBox的选中状况记录下*  
                    MyAdapter.getIsSelected().put(arg2, holder.cb.isChecked());  
                    // 调整选定条目  
                    if (holder.cb.isChecked() == true) {  
                        checkNum++;  
                    } else {  
                        checkNum--;  
                    }  
                    // 用TextView显示  
                    tv_show.setText("已选中" + checkNum + "");  
                }  
            });  
        }  
      
        // 初始化数据  
        private void initDate() {  
            
            for (int i = 0; i < name.length; i++) {  
                User u=new User();
                u.setName(name[i]);
                list.add(u);
            }  
            ;  
        }  
        // 刷新listview和TextView的显示  
        private void dataChanged() {  
            // 通知listView刷新  
            mAdapter.notifyDataSetChanged();  
            // TextView显示最新的选中数目  
            tv_show.setText("已选中" + checkNum + "");  
        };  
    }  
原文地址:https://www.cnblogs.com/123p/p/5383152.html