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可以实现全选等功能的更多相关文章

  1. 2016/3/30 租房子 ①建立租房子的增、删、改php页面 ②多条件查询 ③全选时 各部分全选中 任意checkbox不选中 全选checkbox不选中

    字符串的另一种写法:<<<AAAA; 后两个AA回车要求顶格  不然报错 例子: <!DOCTYPE html> <html lang="en" ...

  2. C# winform中的datagridview控件标头加入checkbox,实现全选功能。

    /// <summary> /// 给DataGridView添加全选 /// </summary> public class AddCheckBoxToDataGridVie ...

  3. checkbox 点击全选

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

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

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

  5. jquery操作checkbox方法(全选、全不选、至少选择一个、选择值/文本)

    原文:http://blog.csdn.net/u014079773/article/details/52371382 在实际开发中我们经常操作checkbox,不仅仅要获得checkbox选中的值, ...

  6. JavaScript 实现全选 / 反选功能

    JavaScript 实现全选 / 反选功能 版权声明:未经授权,内容严禁转载! 构建主体界面 编写 HTML 代码 和 CSS 代码,设计主题界面 <style> #user { wid ...

  7. jquery 书写全选反选功能

    书写一个后台管理中用到的全选反选功能.代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  8. Android ListView(Selector 背景图片 全选 Checkbox等按钮)

    list_item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xm ...

  9. checkbox的单选全选,反选,计算价格,删除

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

随机推荐

  1. iOS widget开发

    链接: iOS Widget开发 iOS开发之构建Widget iOS开发Widget iOS开发-widget基础 ios8新特性widget开发 ios 10 开发-widget实现 Widget ...

  2. libpng使用

    自己的实现 unsigned int component(png_const_bytep row, png_uint_32 x, unsigned int c, unsigned int bit_de ...

  3. spring独立事务分析

    最近在ssm框架的项目中需要用到独立事务的实现,找了半天,搜集了以下理论知识为实现做准备.事务管理器为datasource (1)Spring在transactiondefinition接口中规定了7 ...

  4. Javascript:来一个AJAX封装函数

    前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...

  5. Windows下Nginx Virtual Host多站点配置详解

    Windows下Nginx Virtual Host多站点配置详解 此教程适用于Windows系统已经配置好Nginx+Php+Mysql环境的同学. 如果您还未搭建WNMP环境,请查看 window ...

  6. 在CentOS 6.4 x86_32中使用Rhythmbox听MP3

    Linux中的Rhythmbox音乐播放器,是没有自带MP3音乐解码器的,所以必须得自行安装相应的音乐或视频解码器.好了,不废话…… # cd /tmp # wget http://dl.atrpms ...

  7. 【工具使用】sublime text3

    import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' + '1e3d39e33b79698005270310 ...

  8. 计算机中位(bit), 字节(byte), 字(word)的关系

    1.位(bit) 来自英文bit,音译为“比特”,表示二进制位.位是计算机内部数据储存的最小单位,11010100是一个8位二进制数.一个二进制位只可以表示0和1两种状态(21):两个二进制位可以表示 ...

  9. 线段树 HDU 3308

    t 题目大意:给你n个数,m个操作.操作有两种:1.U x y 将数组第x位变为y   2. Q x y 问数组第x位到第y位连续最长子序列的长度.对于每次询问,输出一个答案 #include< ...

  10. 黄聪:phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护

    首先到phpexcel官网上下载最新的phpexcel类,下周解压缩一个classes文件夹,里面包含了PHPExcel.php和PHPExcel的文件夹,这个类文件和文件夹是我们需要的,把class ...