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. bench.sh 跑分测速

    #!/bin/bash #==============================================================# # Description: bench te ...

  2. JS组件系列——使用HTML标签的data属性初始化JS组件

    前言:最近使用bootstrap组件的时候发现一个易用性问题,很多简单的组件初始化都需要在JS里面写很多的初始化代码,比如一个简单的select标签,因为仅仅只是需要从后台获取数据填充到option里 ...

  3. 用html5 canvas和JS写个数独游戏

    为啥要写这个游戏? 因为我儿子二年级数字下册最后一章讲到了数独.他想玩儿. 因为我也想玩有提示功能的数独. 因为我也正想决定要把HTML5和JS搞搞熟.熟悉一个编程平台,最好的办法,就是了解其原理与思 ...

  4. 2.0(3)MongoDB数据导入导出

    ——————(1)数据导出———————— 导出为JSON格式 mongoexport -d '数据库' -c '表名' -o ***.json 导出为csv mongoexport -d '数据库' ...

  5. sublime text3下BracketHighlighter的配置方法

    st3的配置方法和st2是有区别的,所以网上搜索到的方法大多不能用,我google之后总结了一下. 一. 1.在st3中按preferences-->package settings--> ...

  6. sys

    sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxi ...

  7. 【bzoj1227】 SDOI2009—虔诚的墓主人

    http://www.lydsy.com/JudgeOnline/problem.php?id=1227 (题目链接) 题意 一个n*m的公墓,一个点上要么是墓地,要么是常青树,给出一个数K,并规定每 ...

  8. JavaScript写在Html页面的<head></head>中

    JavaScript写在Html页面的<head></head>中 ----------------- <html> <head> <style ...

  9. C#内存管理与垃圾回收

    垃圾回收还得从根说起,就像生儿育女一样. 根:根是一个位置,存放一个指针,该指针指向托管堆中的一个对象,或是一个空指针不指向任何对象,即为null.根存在线程栈或托管堆中,大部分的跟都在线程栈上,因为 ...

  10. FireFox每次访问页面时检查最新版本

    FireFox每次访问页面时检查最新版本 浏览器都有自己的缓存机制,作为开发人员,每次js的修改都要清空缓存,显然很不方便.而firefox并没有提供ie那样的设置. 下面的方法就可以非常方便的设置f ...