java做全选反选功能_listview中的checkbox实现全选、反选、删除的功能

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 classMainActivity extends Activity implements OnClickListener {privateButton all;privateButton delete;privateButton reverse;privateTextView sum_price;privateListView 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};privateUser user;private ArrayListlist_user;privateMyAdapter adapter;float sum=0;(价格的总价)

@Overrideprotected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);//初始化数据(找控件)

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

setDataForLv();//为按钮设置点击监听事件

all.setOnClickListener(this);

delete.setOnClickListener(this);

reverse.setOnClickListener(this);

}private voidsetDataForLv() {//创建集合对象

list_user = new ArrayList();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 voidinit() {//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);

}

@Overridepublic voidonClick(View v) {switch(v.getId()) {caseR.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;caseR.id.delete://迭代遍历集合对象

Iterator iterator =list_user.iterator();while(iterator.hasNext())

{

User next=iterator.next();//获取每次迭代的对象

boolean ischeck=next.isIscheck();//遍历选中的状态,若是选中的状态,就将选中的 条目删除if(ischeck)

{

iterator.remove();}

}adapter.notifyDataSetChanged();break;caseR.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 list;

private float sum;

private TextView sum_price;

private SharedPreferences share;

public MyAdapter(Context context, List 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 classUser {privateString name;private floatprice;privateboolean ischeck;publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public floatgetPrice() {returnprice;

}public void setPrice(floatprice) {this.price =price;

}publicboolean isIscheck() {returnischeck;

}public voidsetIscheck(boolean ischeck) {this.ischeck =ischeck;

}

@OverridepublicString toString() {return "User [name=" + name + ", price=" + price + ", ischeck="

+ ischeck + "]";

}public User(String name, floatprice, boolean ischeck) {

super();this.name =name;this.price =price;this.ischeck =ischeck;

}publicUser() {

super();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值