带迭代器的 checkbox 全选 反选 不选

原创
2016/04/13 20:12
阅读数 29
 实现类

package com.example.myche;

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

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;

public class MainActivity extends Activity implements OnClickListener {
    public static String[] name = new String[] { "马克思", "恩格斯", "斯大林", "毛泽东",
            "邓小平", "马克思", "恩格斯", "斯大林", "毛泽东", "邓小平", "马克思", "恩格斯", "斯大林",
            "毛泽东", "邓小平" };
    private List<Item> list;
    private ListView lv;
    private Button button1;
    private Button button2;
    private Button button3;
    private Myadapter myadapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.lv);
        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);
        init();

        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        
        myadapter = new Myadapter(list, this);
        lv.setAdapter(myadapter);
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub
                if(list.get(arg2).isIscheck()==true){
                    list.get(arg2).setIscheck(false);
                }else{
                    list.get(arg2).setIscheck(true);
                    
                }
                myadapter.notifyDataSetChanged();
            }
        });

    }

    private void init() {
        list = new ArrayList<Item>();
        for (int i = 0; i < 30; i++) {
            Item item = new Item();
            item.setName("name" + i);
            item.setIscheck(false);
            list.add(item);
        }

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.button1:
            for(int i=0;i<list.size();i++){
                list.get(i).setIscheck(true);
                myadapter.notifyDataSetChanged();
            }
            break;

        case R.id.button2:
            for(int i=0;i<list.size();i++){
                boolean ischeckbox=list.get(i).isIscheck();
                if(ischeckbox==true){
                    list.get(i).setIscheck(false);
                }else{
                    list.get(i).setIscheck(true);
                }
                myadapter.notifyDataSetChanged();
            }

            break;
        case R.id.button3:
            Iterator<Item> it=list.iterator();
            while(it.hasNext()){
                Item i=it.next();
                if(i.isIscheck()==true){
                    it.remove();
                }
                myadapter.notifyDataSetChanged();
            }
            break;
        }
    }

}

适配器

package com.example.myche;

import java.util.List;

import android.content.Context;
import android.database.DataSetObserver;
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.ListAdapter;
import android.widget.TextView;

public class Myadapter extends BaseAdapter {

    private Context context;
    private List<Item> list;

    public Myadapter(List<Item> list,Context context) {
        // TODO Auto-generated constructor stub
        this.context=context;
        this.list=list;
    }

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

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

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final ViewHolder vh;
        
        if(convertView==null){
            convertView=View.inflate(context, R.layout.item, null);
            vh=new ViewHolder();
            vh.name=(TextView) convertView.findViewById(R.id.item_tv);
            vh.checkbox=(CheckBox) convertView.findViewById(R.id.checkbox);
            convertView.setTag(vh);
        }else{
            vh=(ViewHolder) convertView.getTag();
        }
        vh.name.setText(list.get(position).getName());
        vh.checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                if(isChecked){
                    list.get(position).setIscheck(true);
                }else{
                    list.get(position).setIscheck(false);
                }
            }
        });
        vh.checkbox.setChecked(list.get(position).isIscheck());
        return convertView;
    }
    class ViewHolder{
        TextView name;
        CheckBox checkbox;
    }

    
}

item类

package com.example.myche;

public class Item {
    private String name;
    private boolean ischeck;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public boolean isIscheck() {
        return ischeck;
    }
    public void setIscheck(boolean ischeck) {
        this.ischeck = ischeck;
    }
    public Item(String name, boolean ischeck) {
        super();
        this.name = name;
        this.ischeck = ischeck;
    }
    @Override
    public String toString() {
        return "Item [name=" + name + ", ischeck=" + ischeck + "]";
    }
    public Item() {
        super();
        // TODO Auto-generated constructor stub
    }
    

}

展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部