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 ...
随机推荐
- kendo ui简介
Kendo UI Web包含所有创建高速HTML5 web app的必备元素:UI组件.数据源.验证.一个MVVM框架.主题.模板等等. 移动HTML5带UI的开发框架层出不穷,常见的有Sencha ...
- EasyUI实现工地领款单项目
环境搭建 引入jar.配置Spring MVC.web.xml.日志等 建表 自动生成MyBatis相关文件 mybatis-generator-core-1.3.2.jar <?xml ver ...
- docker搭建ros-indigo-arm交叉编译环境
ROS运行环境:ARM ubuntu14.04 + ROS indigo在arm环境下编译ros应用程序,速度极慢,无法忍受,尝试在x86机器上搭建docker+ros交叉编译环境. 交叉编译环境的搭 ...
- jQuery笔记总结
来源于:http://blog.poetries.top/2016/10/20/review-jQuery/ http://www.jianshu.com/p/f8e3936b34c9 首先,来了解一 ...
- centos7 安装jdk1.8
安装之前下熟悉以下连个文件 (1)/etc/profile 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. (2)~/.bashrc: 该文件包含专用于你的bash shell的bas ...
- c++调用lua环境配置
安装完luaforwindows后进行配置 配置项目属性
- oracle普通用户登录em
刚新创建一个用户,登陆EM(Enterprise Manager) 如下提示: 应用程序要求的数据库权限超出了您当前具有的权限.有关特定版本的详细信息, 解决办法: 给登陆用户赋予 select_ca ...
- 【BZOJ-1123】BLO Tarjan 点双连通分量
1123: [POI2008]BLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 970 Solved: 408[Submit][Status][ ...
- Alpha阶段发布说明
Alpha版本功能介绍 机器法官功能已实现 这是我们统计了当下所有存在的狼人APP的共同缺点.也是用户最主要的痛点.现在所有已知存在的类似APP都不能提供法官功能,我们的APP将该功能革命性的自动实现 ...
- K米点歌APP评测
K米APP评测 产品简介 K米点歌是一款免费的社交K歌手机应用,其手机点歌功能主要在KTV.夜总会,酒吧等K歌场所中使用,当前提供iPhone版本及安卓版本下载使用.——百度百科 评测版本 K米点歌4 ...