listview中的checkbox实现全选、反选、删除的功能

1、布局实现的效果

2、找到该布局文件下的所在的activity,实现的效果

package com.bwie.checkbox_all;

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

import com.bwie.adapter.MyAdapter;
import com.bwie.vo.User;

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

public class MainActivity extends Activity implements OnClickListener {

    private Button all;
    private Button delete;
    private Button reverse;
    private TextView sum_price;
    private ListView lv;
    private String[] name = new String[] { "宋静萌", "范丽清", "杨洋", "郑芳蓓", "张丹",
            "刘孟琦", "张聪聪", "任殊慧", "刘黎伟", "巢乐乐", "廉洪波", "朱帅", "李海洋", "黄校丹", "王涛",
            "李豆" };
    private float[] price = new float[] { 100, 100, 100, 100, 100, 100, 100,
            100, 100, 100, 100, 100, 100, 100, 100, 100 };
    private User user;
    private ArrayList<User> list_user;
    private MyAdapter adapter;
    float sum=0;(价格的总价)

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 初始化数据(找控件)
        init();

        // 为lv设置数据
        setDataForLv();

        // 为按钮设置点击监听事件
        all.setOnClickListener(this);
        delete.setOnClickListener(this);
        reverse.setOnClickListener(this);

    }

    private void setDataForLv() {

        // 创建集合对象
        list_user = new ArrayList<User>();

        for (int i = 0; i < name.length; i++) {
            user = new User(name[i], price[i], false);
            // 将对象添加到集合中
            list_user.add(user);
        }

        // 为listview设置适配器
        adapter = new MyAdapter(MainActivity.this, list_user,sum_price);
        lv.setAdapter(adapter);

    }

    private void init() {
        // TODO Auto-generated method stub

        // 找控件
        all = (Button) findViewById(R.id.all);
        delete = (Button) findViewById(R.id.delete);
        reverse = (Button) findViewById(R.id.reverse);
        sum_price = (TextView) findViewById(R.id.sum_price);
        lv = (ListView) findViewById(R.id.lv);

    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
        case R.id.all://全选按钮(将对象中的boolean赋值为true)
            sum=0;//每次点击是都现将总价赋值为0,否则会出现累加的效果

            // 将复选框设置为true
            for (int i = 0; i < list_user.size(); i++) {

                list_user.get(i).setIscheck(true);
                //计算总价
                sum += list_user.get(i).getPrice();

            }

            //为总价textview赋值
            sum_price.setText(sum+"");
            // 重新刷新适配器(实现页面重新展示执行后展示最后的界面)
            adapter.notifyDataSetChanged();

            break;

        case R.id.delete:
            //迭代遍历集合对象
            Iterator<User> iterator = list_user.iterator();
            while(iterator.hasNext())
            {

                User next = iterator.next();//获取每次迭代的对象
                boolean ischeck = next.isIscheck();//遍历选中的状态,若是选中的状态,就将选中的 条目删除

                if(ischeck)
                {
                    iterator.remove();
                }
            }

            adapter.notifyDataSetChanged();

            break;
        case R.id.reverse:

            //反选
            for(int i = 0; i < list_user.size(); i++)
            {
                //判断复选框的选中状态
                boolean ischeck = list_user.get(i).isIscheck();
                if(ischeck)
                {
                    //为选中的状态就使其为未选中的状态
                    list_user.get(i).setIscheck(false);
                    //计算总价
                    sum -= list_user.get(i).getPrice();

                }else{

                    //为未选中的状态就使其为选中的状态
                    list_user.get(i).setIscheck(true);

                    sum += list_user.get(i).getPrice();
                }
            }

            sum_price.setText(sum+"");
            adapter.notifyDataSetChanged();

            break;
        }

    }

}3、对应的适配器的代码
package com.bwie.adapter;

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

import com.bwie.checkbox_all.R;import com.bwie.vo.User;

import android.content.Context;import android.content.SharedPreferences;import android.view.View;import android.view.View.OnClickListener;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 ViewHolder holder;    private List<User> list;    private float sum;    private TextView sum_price;    private SharedPreferences share;

    public MyAdapter(Context context, List<User> list, TextView sum_price) {        this.context = context;        this.list = list;        this.sum_price = sum_price;

    }

    @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) {

        if (convertView == null) {            // 填充新布局            convertView = View.inflate(context, R.layout.item_layout, null);

            holder = new ViewHolder();

            // 找控件            holder.name = (TextView) convertView.findViewById(R.id.name_item);            holder.price = (TextView) convertView.findViewById(R.id.price_item);            holder.box = (CheckBox) convertView.findViewById(R.id.checkbox);

            // 进行绑定            convertView.setTag(holder);

        } else {            holder = (ViewHolder) convertView.getTag();        }

        // 为找到的控件赋值        holder.name.setText(list.get(position).getName());        holder.price.setText(list.get(position).getPrice() + "");

        // 滑动时,checkbox状态改变了(convertView复用导致的),就调用这个方法        holder.box.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override            public void onCheckedChanged(CompoundButton buttonView,                    boolean isChecked) {

                list.get(position).setIscheck(isChecked);

                sum = 0;                for (int i = 0; i < list.size(); i++) {                    boolean ischeck = list.get(i).isIscheck();                    if (ischeck) {                        float price = list.get(i).getPrice();                        sum += price;                    }                }

                sum_price.setText(sum + "");

            }        });

    //为复选框赋值必须写在状态变换监听事件的后面(避免错乱)        holder.box.setChecked(list.get(position).isIscheck());

        return convertView;    }

    class ViewHolder {

        TextView name;        TextView price;        CheckBox box;

    }

}

4、JavaBean类

package com.bwie.vo;

public class User {

    private String name;
    private float price;
    private boolean ischeck;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
    public boolean isIscheck() {
        return ischeck;
    }
    public void setIscheck(boolean ischeck) {
        this.ischeck = ischeck;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", price=" + price + ", ischeck="
                + ischeck + "]";
    }
    public User(String name, float price, boolean ischeck) {
        super();
        this.name = name;
        this.price = price;
        this.ischeck = ischeck;
    }
    public User() {
        super();
    }

}
 
时间: 2024-08-26 03:22:41

listview中的checkbox实现全选、反选、删除的功能的相关文章

Jquery 1.8全选反选删除选中项实现

JQuery1.6以后,Prop的出现,让1.6以下的全选反选效果全部失效了.以下是修正后的版本: 全选反选效果: $(".checkbox").click(function () { $('input[type=checkbox]').prop('checked', $(this).prop('checked')); }); 找到选中项的JQ代码: $("input:[type='checkbox'][checked]") JQ1.6以下的全选反选效果: if (

Javascript 对输入框中的内容进行 “全选/反选”

<</span>script> document.write("<</span>ul>"); for(var i=0;i<</span>18;i++){ document.write("<</span>li>"); document.write('<</span>input type="checkbox" value='+ i +'/>

php对表格进行批量操作如全选反选删除功能

<!DOCTYPE> <html> <head> <meta http-equiv="content-type" content="text/html" charset="utf-8"> <title>Select All</title> <style> table{ border:#999 1px solid; border-collapse:collapse;

ASP.NET给DataGrid,Repeater等添加全选批量删除等功能(转)

很多情况下,在管理或者查看列表的时候我们需要很需要“全选”这个功能,这在ASP.NET中是非常容易实现的,下面我就将演示一点小代码实现这一功能.  实现全选的还是js的一个小函数:   function  CheckAll(e,itemname){    var aa=document.getElementsByName(itemname);    if(aa==undefined) return;    for (var i=0; i<aa.length; i++)aa[i].checked

GridView中实现CheckBox的全选

转载于:http://www.cnblogs.com/oec2003/archive/2007/11/09/954798.html 用服务器端的方法: 在页面上放一个gridview控件,配置好数据源,编辑列,添加一个模版列,再编辑模版,放入一个checkbox控件.代码如下: <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns

关于Winform下DataGridView中实现checkbox全选反选、同步列表项的处理

近期接手一个winform 项目,虽然之前有.net 的经验,但是对一些控件的用法还不是很熟悉. 这段时间将会记录一些在工作中遇到的坎坷以及对应的解决办法,写出来与大家分享并希望大神提出更好解决方法来促进进步. 我也会尽可能把我查找到资料的出处引出来,以此来感恩对我提供帮助的人们. 正题如下 一.关于Winform下DataGridView中实现checkbox全选反选.同步列表项的处理 1.checkbox的添加:在设计页面选择编辑列在新添加的列中注意如下几个属性: SortMode = No

Android高级控件(一)——ListView绑定CheckBox实现全选,添加和删除等功能

Android高级控件(一)--ListView绑定CheckBox实现全选,添加和删除等功能 这个控件还是挺复杂的.也是项目中应该算是比較经常使用的了,所以写了一个小Demo来讲讲,主要是自己定义adapter的使用方法.加了非常多的推断等等等等-.我们先来看看实现的效果吧! 好的,我们新建一个项目LvCheckBox 我们事先先把这两个布局写好吧,一个是主布局,另一个listview的item.xml.相信不用多说 activity_main.xml <LinearLayout xmlns:

checkbox的全选、反选、多选等操作(js)

以下控件的name属性为DEPT_ID (案例中默认选中的checkbox,全选或者反选,对该控件无影响)//1.全选 function selectAllRight(){ $("input[name='DEPT_ID'").each(function() { $(this).prop("checked", true); }); } //2.反选 function reverseSelectRight(){     $("input[name='DEPT_

dView实现checkbox全选反选(自带的ShowSelectCheckBOx)并获取选中checkbox对应的值集合

第一步,显示checkbox按钮: 点击AspxGridView的columns,你可以直接选择增加一行Command Column或者随便选择一种然后点击Change To Commadn Column;默认的ShowSelectCheckBOx是true,我们可以不用管,这样你就看到每行都有checkBox按钮了. 第二步,表头部显示CheckBox,点击实现全选|反选功能: 我们切换回源代码,找到AspxGridView的GridViewCommandColumn列,在该列中增加 <Hea