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 ...
随机推荐
- Qt5.7.0配置选项(configure非常详细的参数)
configure是一个命令行工具,用于配置Qt编译到指定平台.configure必须运行于Qt源码根目录.当运行configure时,编译源码使用的是所选工具链中的make工具. 一.源码目录.编译 ...
- 9个让人印象深刻的网站 JS 视觉效果
网页设计已经提升到一个整体新的水平,Flash 渐渐失去了地位,逐渐被 HTML/JavaScript/CSS 所超越,而且一样可以实现出 Flash 复杂的特效. 本文介绍 8 个让人印象深刻的网站 ...
- oschina(开源中国)的Git代码托管平台使用教程
oschina(开源中国)的Git代码托管平台使用教程 第一章 平台介绍 一. Git@OSC简介 开源中国的Git@OSC一个账号最多可以创建1000个项目,包含公有和私有,开源中国代码托管地址:h ...
- 协同js库,代码编辑器
一些协同的js库 Collabedit, Online Code Editor http://collabedit.com/ Stypi, a realtime editor https://www. ...
- Windows phone应用开发[19]-RSA数据加密
在这个系列的第十六章节中Windows phone应用开发[16]-数据加密 中曾详细讲解过windows phone 常用的MD5,HMAC_MD5,DES,TripleDES[3DES] 数据加密 ...
- 《JavaScript高级程序设计》 - 读书笔记 - 第5章 引用类型
5.1 Object 类型 对象是引用类型的实例.引用类型是一种数据结构,用于将数据和功能组织在一起. 新对象是使用new操作符后跟一个构造函数来创建的.构造函数本身就是一个函数,只不过该函数是出于创 ...
- PlayMaker的应用
PlayMaker属于一个可视化的状态机编辑工具,集成到了Unity的IDE里,在Unity的市场上很受欢迎,本人看见后第一感觉是跟CryEngine的那个状态机特别相似.CE的那个状态机编辑器其实是 ...
- 1122Shell脚本之利用mysqldump备份MySQL数据库
#!/bin/bash #Mysql 自动备份 压缩并上传到 指定ftp #设想每天凌晨3点备份mysql #编辑crontab配置文件 #00 03 * * * backupmysql.sh #压缩 ...
- Linux文件计数
1.当前目录下的文件数 ls -l |grep "^-"|wc -l 2.当前目录的目录树 ls -l |grep "^d"|wc -l 3.当前目录文件数包含 ...
- SpringBoot源码解析:AOP思想以及相应的应用
spring中拦截器和过滤器都是基于AOP思想实现的,过滤器只作用于servlet,表现在请求的前后过程中:拦截器属于spring的一个组件,由spring管理, 可以作用于spring任何资源,对象 ...