activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选"
android:layout_weight="1"
/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="反 选"
android:layout_weight="1"
/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全不选"
android:layout_weight="1"
/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
android:layout_weight="1"
/>
</LinearLayout>
<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ListView
android:id="@+id/listveiw"
android:layout_width="match_parent"
android:layout_height="match_parent" ></ListView> </LinearLayout>

 

listveiw.xml

如果ListView的Item中包含CheckBox,由于CheckBox的焦点优先级高于ListView,所以当选中ListView时,ListView将不会有选中的状态,解决的方法就是在checkbox组件中加一属性:android:focusable="false"

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ddd" /> <CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:focusable="false"
android:clickable="false" android:layout_alignParentRight="true"
android:layout_alignParentTop="true" /> </RelativeLayout>

  MainActivity.java

package com.bawei.day04_listview;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import com.bawei.day04_listview.Adper.ViewHolder;
import com.bawei.vo.Good; 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.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView; public class MainActivity extends Activity { private Button button1;
private Button button2;
private Button button3;
private ListView listView;
private List<Good> list;
private TextView price;
private int num=0;
private int pric=0;
private BaseAdapter adapter;
private Button button4;
private List<Good> li;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);//全选
button2 = (Button) findViewById(R.id.button2);//反选
button3 = (Button) findViewById(R.id.button3);//全不选
button4 = (Button) findViewById(R.id.button4);//删除
listView = (ListView) findViewById(R.id.listveiw);//价格 price = (TextView) findViewById(R.id.price);
list = new ArrayList<Good>();
//赋值
for (int i = 0; i < 60; i++) {
list.add(new Good(i+"", false));
}
//适配
adapter = new Adper(list,MainActivity.this);
listView.setAdapter(adapter);
//全选
button1.setOnClickListener(new OnClickListener() { public void onClick(View v) {
// TODO Auto-generated method stub num = 0;
pric = 0; for (int i = 0; i < list.size(); i++) {
//改变boolean
list.get(i).setBo(true);
//如果为选中
if(list.get(i).getBo()){ num++;
pric+=Integer.parseInt(list.get(i).getName()); }
}
//刷新
adapter.notifyDataSetChanged();
//显示
price.setText("一共选了"+num+"件,"+"价格是"+pric+"元"); }
});
//反选
button2.setOnClickListener(new OnClickListener() { public void onClick(View v) {
// TODO Auto-generated method stub
num = 0;
pric = 0;
for (int i = 0; i < list.size(); i++) {
//改值
if(list.get(i).getBo()){
list.get(i).setBo(false);
}else{
list.get(i).setBo(true);
}
//刷新
adapter.notifyDataSetChanged();
//如果为选中
if(list.get(i).getBo()){ num++;
pric+=Integer.parseInt(list.get(i).getName()); }
}
// 用TextView显示
price.setText("一共选了"+num+"件,"+"价格是"+pric+"元");
}
});
//全不选
button3.setOnClickListener(new OnClickListener() { public void onClick(View v) {
// TODO Auto-generated method stub
num = 0;
pric = 0;
for (int i = 0; i < list.size(); i++) {
//改值
list.get(i).setBo(false);
//刷新
adapter.notifyDataSetChanged();
//如果为选中
if(list.get(i).getBo()){
num++;
pric+=Integer.parseInt(list.get(i).getName());
} }
price.setText("一共选了"+num+"件,"+"价格是"+pric+"元");
}
});
//删除1
/*li = new ArrayList<Good>();
button4.setOnClickListener(new OnClickListener() { public void onClick(View v) {
// TODO Auto-generated method stub
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getBo()){
//把要删除的保存起来
li.add(list.get(i)); } }
//删除
list.removeAll(li);
adapter.notifyDataSetChanged();
num = 0;
pric = 0;
price.setText("一共选了"+num+"件,"+"价格是"+pric+"元");
}
});*/
//删除2
button4.setOnClickListener(new OnClickListener() { public void onClick(View v) {
// TODO Auto-generated method stub
//获取list集合对应的迭代器
Iterator it=list.iterator();
while (it.hasNext()) {
//得到对应集合元素
Good g=(Good) it.next();
//判断
if(g.getBo()){
//从集合中删除上一次next方法返回的元素
it.remove();
}
}
//刷新
adapter.notifyDataSetChanged();
num = 0;
pric = 0;
//显示
price.setText("一共选了"+num+"件,"+"价格是"+pric+"元");
}
});
// 绑定listView的监听器
listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
// 取得ViewHolder对象
ViewHolder viewHolder = (ViewHolder) arg1.getTag();
// 改变CheckBox的状态
viewHolder.checkBox.toggle();
// 将CheckBox的选中状况记录下来
list.get(arg2).setBo(viewHolder.checkBox.isChecked());
// 调整选定条目
if (viewHolder.checkBox.isChecked() == true) {
num++;
pric+=Integer.parseInt(list.get(arg2).getName());
} else {
num--;
pric-=Integer.parseInt(list.get(arg2).getName());
}
// 用TextView显示
price.setText("一共选了"+num+"件,"+"价格是"+pric+"元");
}
}); } }

  List的Vo类Good.java

package com.bawei.vo;

public class Good {
private String name;
private boolean bo;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean getBo() {
return bo;
}
public void setBo(boolean bo) {
this.bo = bo;
}
@Override
public String toString() {
return "Good [name=" + name + ", bo=" + bo + "]";
}
public Good(String name, boolean bo) {
super();
this.name = name;
this.bo = bo;
}
public Good() {
super();
} }

  适配Adper.java

package com.bawei.day04_listview;

import java.util.List;

import com.bawei.vo.Good;

import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView; public class Adper extends BaseAdapter {
List<Good> list;
Context context; public Adper(List<Good> list, Context context) {
// TODO Auto-generated constructor stub
this.list=list;
this.context=context; } public int getCount() {
// TODO Auto-generated method stub
return list.size();
} public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
} public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
} public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder viewHolder;
if(convertView==null){
convertView=View.inflate(context, R.layout.listveiw, null);
viewHolder=new ViewHolder();
viewHolder.textView=(TextView) convertView.findViewById(R.id.text);
viewHolder.checkBox=(CheckBox) convertView.findViewById(R.id.checkbox);
convertView.setTag(viewHolder);
}else{
viewHolder=(ViewHolder) convertView.getTag();
}
viewHolder.textView.setText("价格:"+list.get(position).getName()); //显示checkBox
viewHolder.checkBox.setChecked(list.get(position).getBo()); return convertView; }
class ViewHolder{
TextView textView;
CheckBox checkBox;
}
}

  

checkbox的单选全选,反选,计算价格,删除的更多相关文章

  1. jQuery实现全选/反选和批量删除

    <%@ page language="java" contentType="text/html; charset=utf-8"     pageEncod ...

  2. jQuery全选/反选checkbox

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. jquery、js操作checkbox全选反选

    全选反选checkbox在实际应用中比较常见,本文有个不错的示例,大家可以参考下 操作checkbox,全选反选//全选 function checkAll() { $('input[name=&qu ...

  4. jquery、js全选反选checkbox

    操作checkbox,全选反选 //全选 function checkAll() { $('input[name="TheID"]').attr("checked&quo ...

  5. 表单javascript checkbox全选 反选 全不选

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  6. 表单Checkbox全选反选全不选

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

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

    近期接手一个winform 项目,虽然之前有.net 的经验,但是对一些控件的用法还不是很熟悉. 这段时间将会记录一些在工作中遇到的坎坷以及对应的解决办法,写出来与大家分享并希望大神提出更好解决方法来 ...

  8. 页面的checkbox框的全选与反选

    if (typeof jQuery == 'undefined') {     alert("请先导入jQuery");} else {    jQuery.extend({    ...

  9. Jquery 利用单个复选款(checkbox)实现全选、反选

    1 <script type="text/javascript"> $(function(){ //全选 $("#CheckedAll").clic ...

随机推荐

  1. Aidl的使用步骤

    先说说Aidl传递参数类型 1.基本数据类型(除short类型) 2.String.charSequence 3.List,map 4.parcelable 第1步:定义一个*.aidl文件,ecli ...

  2. python中的进程、线程(threading、multiprocessing、Queue、subprocess)

    Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...

  3. Java 路径

    http://swiftlet.net/archives/713 Java中不存在标准的相对路径,各种相对路径取资源的方式都是基于某种规则转化为绝对路径.所以在Java中文件路径问题无非归结为一点:找 ...

  4. 前端性能优化----yahoo前端性能团队总结的35条黄金定律

    转自 http://www.cnblogs.com/lei2007/archive/2013/08/16/3262897.html

  5. poj1700

    这题的最坑的地方就是每步可能会有两种情况,这两情况起初我都单独考虑了,但就是没放在一起考虑...wa个不停,果然贪心是一个很考验思维的东西. 这里可以这样考虑,在运人的过程中,河的起始岸最后终将剩下一 ...

  6. 理解group by 语句的扩展使用

    在SQL的开发中我们会经常使用group by语句对数据进行分组统计,然而在一些复杂的BI报表开发中会常遇到更复杂的分组需求,单单使用group by 就不能解决我们的问题了,这时我们就需要学习了解一 ...

  7. Oracle常用命令(持续更新)

    --1.解锁用户 alter user 用户名 account unlock; --2.开启最小补充日志记录(执行的DML操作会被记录下来)  alter database add supplemen ...

  8. (转)MySQL优化实例

    在Apache, PHP,MySQL的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分.对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接影响到论坛的速度和承载量!同时 ...

  9. 杭电ACM 1197

    #include<stdio.h>main(){ int temp,i,t,sum10,sum12,sum16; for(i=1000;i<=9999;i++) { temp=i; ...

  10. Empire C:Basic 3

    首先我们定义一个表示年龄的指针: int* page: 这就是定义了一个指针,和定义普通变量就多了一个*符号而已. 为什么变量名用了p开头,这里引用了英文pointer(指向),表示它是一个指针,而非 ...