ListView加checkBox可以实现全选等功能
1.效果图

2.LIteView_item布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dip"
android:layout_weight="1.0"
android:layout_marginLeft="10dp" android:orientation="horizontal"
android:descendantFocusability="blocksDescendants"
android:background="#AAAAAA"
> <CheckBox android:id="@+id/isCheakBox" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" /> <ImageView android:id="@+id/dailyPic"
android:contentDescription="dailyPic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3.0dip"
android:src="@mipmap/txt"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"/> <TextView
android:id="@+id/dailyName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/dailyPic"
android:text=""
android:layout_centerVertical="true"
android:textColor="#000000"
android:textSize="12.0sp" /> </RelativeLayout>
3.主布局: 只要有checkbox,listView 也行
<?xml version="1.0" encoding="utf-8"?>
<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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="@color/bai"
tools:context="myapplication.com.myblue.activity.Rizhi_Activity">
<LinearLayout
android:layout_height="45dp"
android:layout_width="match_parent"
android:background="@color/rizhi"
android:id="@+id/layout1"
android:visibility="gone"
android:gravity="center_horizontal|center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/textView_quxiao"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:text="取消"
android:layout_marginLeft="10dp"
android:background="@color/rizhi"
android:gravity="center_horizontal|center_vertical"
android:textColor="@color/bai"/>
<TextView
android:id="@+id/textView_quanxuan"
android:layout_height="match_parent"
android:layout_width="0dp"
android:gravity="center_horizontal|center_vertical"
android:layout_weight="1"
android:text="已选择1项"
android:textColor="@color/bai"/>
<CheckBox android:id="@+id/all_check_btn"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"/>
</LinearLayout>
<LinearLayout
android:id="@+id/layout2"
android:layout_height="@dimen/titlebar"
android:layout_width="match_parent"
android:background="@color/theme"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView1"
android:layout_height="match_parent"
android:layout_width="@dimen/zhuyemian"
android:layout_gravity="center_vertical"
android:src="@mipmap/search_back"/>
<TextView
android:id="@+id/textView1"
android:layout_height="@dimen/titlebar"
android:layout_width="0dp"
android:text="@string/rizhi_textview1"
android:gravity="center_horizontal|center_vertical"
android:textSize="@dimen/title_size"
android:layout_weight="1"/>
<ImageView
android:layout_height="match_parent"
android:layout_width="@dimen/zhuyemian"
android:src="@mipmap/search"/>
</LinearLayout> <ListView
android:layout_marginTop="3dp"
android:id="@+id/listView"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_width="match_parent"/> <LinearLayout
android:layout_height="45dp"
android:layout_width="match_parent"
android:id="@+id/layout3"
android:visibility="gone"
android:background="@color/rizhi"
android:gravity="center_horizontal|center_vertical"
android:orientation="horizontal"> <TextView
android:layout_height="match_parent"
android:layout_width="0dp"
android:gravity="center_horizontal|center_vertical"
android:layout_weight="1"
android:text="删除"
android:textColor="@color/bai"/>
<TextView
android:id="@+id/textView_loadup"
android:layout_height="match_parent"
android:layout_width="0dp"
android:gravity="center_horizontal|center_vertical"
android:layout_weight="1"
android:text="上传"
android:textColor="@color/bai"/> </LinearLayout>
</LinearLayout>
4.adapter
class DraftDailyAdapter extends BaseAdapter {
public List<Item> list;
private Context context;
LayoutInflater inflater;
public DraftDailyAdapter(Context context, List<Item> list) {
super();
this.list = list;
this.context = context;
inflater = LayoutInflater.from(this.context);
}
@Override
public int getCount() {
return list == null ? 0 : list.size();
}
@Override
public Object getItem(int location) {
return list.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
Item item = list.get(position);
//Item的位置
final int listPosition = position;
//这个记录item的id用于操作isCheckedMap来更新CheckBox的状态
final int id = item.id;
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.layout_listviewitem, null);
holder.tvName = (TextView)convertView.findViewById(R.id.dailyName);
holder.dailyPic= (ImageView) convertView.findViewById(R.id.dailyPic);
// holder.deleteButton = (ImageButton)convertView.findViewById(R.id.deleteAttachment);
holder.cBox = (CheckBox)convertView.findViewById(R.id.isCheakBox);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
// Log.d(TAG, "id="+id);
holder.cBox.setChecked(isCheckedMap.get(id));
holder.tvName.setText(item.name);
if(item.name.contains("txt")){
holder.dailyPic.setImageResource(R.mipmap.txt);
}else{
holder.dailyPic.setImageResource(R.mipmap.photo);
}
// holder.deleteButton.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View paramView) {
// //Log.d(TAG, "deletePosition="+listPosition+"");
// //删除list中的数据
// list.remove(listPosition);
// //删除Map中对应选中状态数据
// isCheckedMap.remove(id);
// //通知列表数据修改
// adapter.notifyDataSetChanged();
// }
// });
holder.cBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
layout1.setVisibility(View.VISIBLE);
layout2.setVisibility(View.GONE);
layout3.setVisibility(View.VISIBLE);
if(isChecked){
isCheckedMap.put(id,true);
}else{
isCheckedMap.put(id,false);
}
}
});
return convertView;
}
public final class ViewHolder {
public TextView tvName;
public ImageButton deleteButton;
public CheckBox cBox;
ImageView dailyPic;
}
}
5.item数据类
class Item {
private Integer id;
private String name;
String address;
}
6.实现
package myapplication.com.myblue.activity; import android.content.Context;
import android.graphics.Color;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.SearchView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView; import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set; import myapplication.com.myblue.R;
import myapplication.com.myblue.adapter.ListViewAdapter;
import myapplication.com.myblue.entity.WenjianBean;
import myapplication.com.myblue.utils.SDcardHelper; public class Rizhi_Activity extends AppCompatActivity implements SearchView.OnQueryTextListener{
SearchView rizhi_searchview;
ImageView imageView1;
LinearLayout layout1,layout2,layout3;
TextView textView_quanxuan,textView_quxiao,textView_loadup; /*
*
* ***/
private List<Item> itemList;
private DraftDailyAdapter adapter;
private Map<Integer, Boolean> isCheckedMap;
private CheckBox allCheckBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rizhi);
initView();
}
public void initView(){
// 这里的data数据是读取的文件夹path和name,根据自己需要修改Item数据
File file1=new File(Environment.getExternalStorageDirectory()+File.separator+"AA");
File[] files = file1.listFiles();
List<WenjianBean>data=SDcardHelper.getFileName(files);
allCheckBox = (CheckBox)findViewById(R.id.all_check_btn);
itemList = new ArrayList<Item>();
ListView list= (ListView) findViewById(R.id.listView);
isCheckedMap = new HashMap<Integer, Boolean>();
//初始化数据
for(int i=0;i<data.size();i++){
Item item = new Item();
item.id=i;
item.name = data.get(i).getName();
item.address=data.get(i).getAddress();
itemList.add(item);
isCheckedMap.put(i,false);
}
adapter = new DraftDailyAdapter(this,itemList);
list.setAdapter(adapter);
textView_loadup= (TextView) findViewById(R.id.textView_loadup);
layout1= (LinearLayout) findViewById(R.id.layout1);
layout2= (LinearLayout) findViewById(R.id.layout2);
layout3= (LinearLayout) findViewById(R.id.layout3);
textView_quanxuan= (TextView) findViewById(R.id.textView_quanxuan);
textView_quxiao= (TextView) findViewById(R.id.textView_quxiao); // final ListViewAdapter adapter=new ListViewAdapter(getApplicationContext(),data,layout1,layout2,layout3);
// listView= (ListView) findViewById(R.id.listView);
// listView.setAdapter(adapter);
imageView1= (ImageView) findViewById(R.id.imageView1);
imageView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
textView_quxiao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.VISIBLE);
layout3.setVisibility(View.GONE);
}
}); textView_quanxuan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { }
}); /****
* 全选功能
* */
allCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Set<Integer> set = isCheckedMap.keySet();
Iterator<Integer> iterator = set.iterator();
if(isChecked){
while(iterator.hasNext()){
Integer keyId = iterator.next();
isCheckedMap.put(keyId,true);
}
}else{
while(iterator.hasNext()){
Integer keyId = iterator.next();
isCheckedMap.put(keyId,false);
}
}
adapter.notifyDataSetChanged();
}
}); textView_loadup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { for(Map.Entry<Integer, Boolean> entry:isCheckedMap.entrySet()){
System.out.println(entry.getKey()+"--->"+entry.getValue());
if(entry.getValue().toString().contains("true")){
// 读取选中的数据
System.out.println("**"+itemList.get(entry.getKey()).name+itemList.get(entry.getKey()).address);
}
}
}
}); } @Override
public boolean onQueryTextSubmit(String query) { return false;
} @Override
public boolean onQueryTextChange(String newText) {
return false;
} /***
* adapter
* **/
class DraftDailyAdapter extends BaseAdapter { public List<Item> list;
private Context context;
LayoutInflater inflater; public DraftDailyAdapter(Context context, List<Item> list) {
super();
this.list = list;
this.context = context;
inflater = LayoutInflater.from(this.context);
}
@Override
public int getCount() {
return list == null ? 0 : list.size();
}
@Override
public Object getItem(int location) {
return list.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
Item item = list.get(position);
//Item的位置
final int listPosition = position;
//这个记录item的id用于操作isCheckedMap来更新CheckBox的状态
final int id = item.id;
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.layout_listviewitem, null);
holder.tvName = (TextView)convertView.findViewById(R.id.dailyName);
holder.dailyPic= (ImageView) convertView.findViewById(R.id.dailyPic);
// holder.deleteButton = (ImageButton)convertView.findViewById(R.id.deleteAttachment);
holder.cBox = (CheckBox)convertView.findViewById(R.id.isCheakBox);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
// Log.d(TAG, "id="+id);
holder.cBox.setChecked(isCheckedMap.get(id));
holder.tvName.setText(item.name);
if(item.name.contains("txt")){
holder.dailyPic.setImageResource(R.mipmap.txt);
}else{
holder.dailyPic.setImageResource(R.mipmap.photo);
}
// holder.deleteButton.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View paramView) {
// //Log.d(TAG, "deletePosition="+listPosition+"");
// //删除list中的数据
// list.remove(listPosition);
// //删除Map中对应选中状态数据
// isCheckedMap.remove(id);
// //通知列表数据修改
// adapter.notifyDataSetChanged();
// }
// });
holder.cBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
layout1.setVisibility(View.VISIBLE);
layout2.setVisibility(View.GONE);
layout3.setVisibility(View.VISIBLE);
if(isChecked){
isCheckedMap.put(id,true);
}else{
isCheckedMap.put(id,false);
}
}
});
return convertView;
}
public final class ViewHolder {
public TextView tvName;
public ImageButton deleteButton;
public CheckBox cBox;
ImageView dailyPic;
}
}
// 填充数据类
class Item {
private Integer id;
private String name;
String address;
}
}
ListView加checkBox可以实现全选等功能的更多相关文章
- 2016/3/30 租房子 ①建立租房子的增、删、改php页面 ②多条件查询 ③全选时 各部分全选中 任意checkbox不选中 全选checkbox不选中
字符串的另一种写法:<<<AAAA; 后两个AA回车要求顶格 不然报错 例子: <!DOCTYPE html> <html lang="en" ...
- C# winform中的datagridview控件标头加入checkbox,实现全选功能。
/// <summary> /// 给DataGridView添加全选 /// </summary> public class AddCheckBoxToDataGridVie ...
- checkbox 点击全选
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Jquery 利用单个复选款(checkbox)实现全选、反选
1 <script type="text/javascript"> $(function(){ //全选 $("#CheckedAll").clic ...
- jquery操作checkbox方法(全选、全不选、至少选择一个、选择值/文本)
原文:http://blog.csdn.net/u014079773/article/details/52371382 在实际开发中我们经常操作checkbox,不仅仅要获得checkbox选中的值, ...
- JavaScript 实现全选 / 反选功能
JavaScript 实现全选 / 反选功能 版权声明:未经授权,内容严禁转载! 构建主体界面 编写 HTML 代码 和 CSS 代码,设计主题界面 <style> #user { wid ...
- jquery 书写全选反选功能
书写一个后台管理中用到的全选反选功能.代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- Android ListView(Selector 背景图片 全选 Checkbox等按钮)
list_item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xm ...
- checkbox的单选全选,反选,计算价格,删除
activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
随机推荐
- HTML和xhtml,CSS
索引: 初学者入门书籍 高级进阶书籍 W3C官方手册 网站架构 移动平台网站开发 视频资源 开发工具 初学者入门书籍: 中文电子书 深入浅出html pdf中文版 魅丽的网页设计 JAVA WE ...
- visual studio 2015中的webapi生成helpPage,页面不显示方法说明问题解决
环境: vs2015.win7 参考:http://www.cnblogs.com/Erik_Xu/p/5638381.html 生成的help页面如下:,并没有显示控制器和方法. 原因是:新建项目时 ...
- 几个ES6新特性
ES6是JavaScript语言的下一代标准,已经在2015年6月正式发布了,因为ES6的第一个版本是在2015年发布的,所以又称ECMAScript 2015(简称ES2015).本文主要讲述的是E ...
- WCF中的错误及解决办法
一 . HTTP 无法注册 URL http://+:8000/Users/.进程不具有此命名空间的访问权限今天按照网上的例子开始学习WCF程序,运行的时候却发现出如下问题:HTTP 无法注册 ...
- Xml,Json,Hessian,Protocol Buffers序列化对比
简介 这篇博客主要对Xml,Json,Hessian,Protocol Buffers的序列化和反序列化性能进行对比,Xml和Json的基本概念就不说了. Hessian:Hessian是一个轻量级的 ...
- 二维RMQ
求二维ST表 ;k<=;k++) ;l<=;l++) ;i<=n;i++) ;j<=m;j++){ <<(l-)),m+),tx=min(n+,i+(<< ...
- Bootstrap使用后笔记
Bootstrap Modal 垂直居中 在 bootstrap.js中修改如下代码: Modal.prototype.adjustDialog = function () { var modal ...
- Spring IOC容器创建对象的方式
一.无参构造函数创建 我们用Spring创建Stu ...
- php面向对象编程(二)
现在我们来了解一下面向对象的一个封装性的问题 封装性:在我的理解里面 可以理解为一个u盘 我们使用u盘的接口与电脑进行数据之间的交互 但是我们不能看到里面的结构 这个特性我们可以称为封装性 好处:利用 ...
- couldn't open file: data/coco.names
在ubuntu下配置yolo(v2)的时候,编译了源码后,尝试运行demo: ./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg 结果报错提 ...