android复选框删除、反选、全选以及取消

来源:互联网 发布:数据分析前途 编辑:程序博客网 时间:2024/05/17 13:41

//主界面

package com.bwie.test;

import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import com.bwie.test.adapter.MyAdapter;
import com.bwie.test.adapter.MyAdapter.ViewHolder;
import com.bwie.test.bean.Person;
import com.bwie.test.httpUrlConnection.HttpUrlGetConnectinGet;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.app.Activity;

public class MainActivity extends Activity {

    private ListView lv;
    private List<Person> list;
    private MyAdapter adapter;
    private ImageView allCheckBox;
    private int checkNum; // 记录选中的条目数量
    private TextView selected;
    private TextView fanxuan;
    private TextView cancle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初始化控件
        lv = (ListView) findViewById(R.id.lv);
        allCheckBox = (ImageView) findViewById(R.id.de_chu);
        selected = (TextView) findViewById(R.id.selectedCall);
        fanxuan = (TextView) findViewById(R.id.fanxuan);
        cancle = (TextView) findViewById(R.id.cancle);
        // 全选
        selected.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                // 遍历list的长度,将MyAdapter中的map值全部设为true
                for (int i = 0; i < list.size(); i++) {
                    MyAdapter.getIsSelected().put(i, true);
                }
                // 数量设为list的长度
                checkNum = list.size();
                // 刷新listview和TextView的显示
                dataChanged();
            }
        });
        // 反选
        fanxuan.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                // 遍历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();
            }
        });
        // 取消
        cancle.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                // 遍历list的长度,将已选的按钮设为未选
                for (int i = 0; i < list.size(); i++) {
                    if (MyAdapter.getIsSelected().get(i)) {
                        MyAdapter.getIsSelected().put(i, false);
                        checkNum--;// 数量减1
                    }
                }
                // 刷新listview和TextView的显示
                dataChanged();
            }
        });
        //删除
        allCheckBox.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                for (int i = 0; i < list.size(); i++) {
                    Person p = list.get(i);
                    if (p.isCheck()) {
                        list.remove(i);
                        i--;
                    }

                }
                // 刷新listview和TextView的显示
                dataChanged();
            }
        });
        // 开启线程
        new MyThread().start();

    }

    public class MyThread extends Thread {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            super.run();
            list = new ArrayList<Person>();
            try {
                String str = HttpUrlGetConnectinGet.HGet();
                Log.e("======", str);
                JSONObject object = new JSONObject(str);
                JSONArray jsonarray = object.getJSONArray("data");
                for (int i = 0; i < jsonarray.length(); i++) {
                    JSONObject jsonObject = jsonarray.getJSONObject(i);
                    String channelName = jsonObject.getString("channelName");
                    Person p = new Person();
                    p.setChannelName(channelName);
                    list.add(p);
                }
                Message msg = new Message();
                msg.obj = list;
                Log.e("======++", list + "");
                msg.what = 1;
                myHandler.sendMessage(msg);
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }

        }
    }

    public Handler myHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
            case 1:
                List<Person> mlist = (List<Person>) msg.obj;
                adapter = new MyAdapter(MainActivity.this, mlist);
                lv.setAdapter(adapter);
                lv.setOnItemClickListener(new OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> arg0, View arg1,
                            int arg2, long arg3) {
                        // TODO Auto-generated method stub
                        // 取得ViewHolder对象,这样就省去了通过层层的findViewById去实例化我们需要的cb实例的步骤
                        ViewHolder viewHolder = (ViewHolder) arg1.getTag();
                        // 改变CheckBox的状态
                        viewHolder.ck.toggle();
                        // 将CheckBox的选中状况记录下来
                        MyAdapter.getIsSelected().put(arg2,
                                viewHolder.ck.isChecked());
                        // 调整选定条目
                        if (viewHolder.ck.isChecked() == true) {
                            checkNum++;
                        } else {
                            checkNum--;
                        }
                    }
                });

                break;
            default:
                break;
            }

        };

    };

    private void dataChanged() {
        // 通知listView刷新
        adapter.notifyDataSetChanged();
    };

}

//adapter 界面

package com.bwie.test.adapter;
import java.util.HashMap;
import java.util.List;
import com.bwie.test.R;
import com.bwie.test.bean.Person;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter {

    private Context context;
    private List<Person> mlist;
    private static HashMap<Integer,Boolean> isSelected;

    public MyAdapter(Context context, List<Person> mlist) {
        // TODO Auto-generated constructor stub
        this.context = context;
        this.mlist = mlist;
        isSelected=new HashMap<Integer, Boolean>();
        initData();
    }

    private void initData() {
        // TODO Auto-generated method stub
         for (int i = 0; i < mlist.size(); i++) {
               getIsSelected().put(i,false);
               }
        
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return mlist.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return mlist.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        //viewHolder的优化
        ViewHolder viewHolder;
        if (convertView==null) {
            viewHolder=new ViewHolder();
            convertView=View.inflate(context,R.layout.list_item,null);
            viewHolder.tvname=(TextView) convertView
                    .findViewById(R.id.text_name);
            viewHolder.ck=(CheckBox) convertView.findViewById(R.id.checkBox1);
            convertView.setTag(viewHolder);
        } else {
            viewHolder=(ViewHolder)convertView.getTag();
        }
        viewHolder.tvname.setText(mlist.get(position).getChannelName());
        viewHolder.ck.setChecked(getIsSelected().get(position));
        viewHolder.ck.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                if(isChecked){
                    mlist.get(position).setCheck(true);
                }else{
                    mlist.get(position).setCheck(false);
                }
            }
        });
        return convertView;
    }
    public static HashMap<Integer, Boolean> getIsSelected() {
        return isSelected;
    }

    public static void setIsSelected(HashMap<Integer, Boolean> isSelected) {
        MyAdapter.isSelected = isSelected;
    }
    public static class ViewHolder {
        TextView tvname;
        public CheckBox ck;
    }

}

//person界面

package com.bwie.test.bean;
public class Person {
    private String uid;
    private String channelName;
    private String channelKey;
    private String descr;
    private String createDate;
    private String channelLogo;
    private String channelVersion;
    private boolean isCheck;
    
    public Person(String uid, String channelName, String channelKey,
            String descr, String createDate, String channelLogo,
            String channelVersion, boolean isCheck) {
        super();
        this.uid = uid;
        this.channelName = channelName;
        this.channelKey = channelKey;
        this.descr = descr;
        this.createDate = createDate;
        this.channelLogo = channelLogo;
        this.channelVersion = channelVersion;
        this.isCheck = isCheck;
    }

    /**
     * @return the uid
     */
    public String getUid() {
        return uid;
    }

    /**
     * @param uid the uid to set
     */
    public void setUid(String uid) {
        this.uid = uid;
    }

    /**
     * @return the channelName
     */
    public String getChannelName() {
        return channelName;
    }

    /**
     * @param channelName the channelName to set
     */
    public void setChannelName(String channelName) {
        this.channelName = channelName;
    }

    /**
     * @return the channelKey
     */
    public String getChannelKey() {
        return channelKey;
    }

    /**
     * @param channelKey the channelKey to set
     */
    public void setChannelKey(String channelKey) {
        this.channelKey = channelKey;
    }

    /**
     * @return the descr
     */
    public String getDescr() {
        return descr;
    }

    /**
     * @param descr the descr to set
     */
    public void setDescr(String descr) {
        this.descr = descr;
    }

    /**
     * @return the createDate
     */
    public String getCreateDate() {
        return createDate;
    }

    /**
     * @param createDate the createDate to set
     */
    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }

    /**
     * @return the channelLogo
     */
    public String getChannelLogo() {
        return channelLogo;
    }

    /**
     * @param channelLogo the channelLogo to set
     */
    public void setChannelLogo(String channelLogo) {
        this.channelLogo = channelLogo;
    }

    /**
     * @return the channelVersion
     */
    public String getChannelVersion() {
        return channelVersion;
    }

    /**
     * @param channelVersion the channelVersion to set
     */
    public void setChannelVersion(String channelVersion) {
        this.channelVersion = channelVersion;
    }

    /**
     * @return the isCheck
     */
    public boolean isCheck() {
        return isCheck;
    }

    /**
     * @param isCheck the isCheck to set
     */
    public void setCheck(boolean isCheck) {
        this.isCheck = isCheck;
    }

    public Person(){}
}

//数据请求界面
package com.bwie.test.httpUrlConnection;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class HttpUrlGetConnectinGet {
public static String HGet(){
    String result="";
    String path="http://121.42.8.95:8090/AndroidServer/yk.json";
    try {
        HttpGet h=new HttpGet(path);
        HttpClient httpclient=new DefaultHttpClient();       
        HttpResponse httpResponse = httpclient.execute(h);
        if(httpResponse.getStatusLine().getStatusCode()==200){
            HttpEntity httpEntity = httpResponse.getEntity();
            result=EntityUtils.toString(httpEntity,"utf-8");
        }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
    return result;
}
}


0 0
原创粉丝点击