• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > ListView的CheckBox实现全部选中/不选中,listviewcheckbox

ListView的CheckBox实现全部选中/不选中,listviewcheckbox

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了listview嵌套checkbox,listview加checkbox,listview checkbox,listview中的checkbox,listview添加checkbox等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

ListView的CheckBox实现全部选中/不选中,listviewcheckbox


在Adapter类中定义一个HashMap列表,保存每一行是否被选中:

private static HashMap<Integer, Boolean> isSelected;

可见定义了名为isSelected的HashMap列表,再定义它的getter和setter方法:

    public static void setIsSelected(HashMap<Integer, Boolean> isSelected)   {  
        MyAdapter.isSelected = isSelected;  
    }
    
    public static HashMap<Integer, Boolean> getIsSelected() {  
        return isSelected;  
    }

在Adapter类的构造方法中,将isSelected的所有初始值设置为false:

    public MyAdapter(Context context, List<String> list){
        this.context = context;
        this.list = list;        
        isSelected = new HashMap<Integer, Boolean>();
        initData();
    }
    
    private void initData() {  
        for (int i = 0; i < list.size(); i++) {  
            getIsSelected().put(i, false);  
        }  
    }

在getView方法中,定义CheckBox的点击方法,当CheckBox选中/不选中时设置isSelected的值为true/false;同时根据isSelected的值设置CheckBox是否选中,并显示相应的图标:

        mCheckbox = (CheckBox)convertView.findViewById(R.id.chkBox);
        mCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener(){
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                if (isChecked){
                    buttonView.setButtonDrawable(R.drawable.r02);
                    isSelected.put(position, true);
                }else{
                    buttonView.setButtonDrawable(R.drawable.r01);
                    isSelected.put(position, false);
                }
            }            
        });
        mCheckbox.setChecked(getIsSelected().get(position));
        if (getIsSelected().get(position)){
            mCheckbox.setButtonDrawable(R.drawable.r02);
        }else{
            mCheckbox.setButtonDrawable(R.drawable.r01);
        }

在主窗体文件中,当点击列表下面的CheckBox时,调用selectAll方法将isSelected的所有值设置为true/false,同时显示相应的图标:

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()){
        case R.id.chkSelect:
            selectAll(chkSelect.isChecked());
            break;
        case R.id.btnDelete:
            break;
        default:
            break;
        }
        
    }
    private void selectAll(boolean x){
        for (int i=0; i<mList.size(); i++){
            mAdapter.getIsSelected().put(i, x);
        }
        if (chkSelect.isChecked()){
            chkSelect.setButtonDrawable(R.drawable.r02);
        }else{
            chkSelect.setButtonDrawable(R.drawable.r01);
        }
        mAdapter.notifyDataSetChanged();
    }

完整的文件如下。

MainActivity.java:

package com.hzhi.mylistview;

import android.support.v7.app.ActionBarActivity;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;

public class MainActivity extends ActionBarActivity implements OnClickListener{
    
    private CheckBox chkSelect;
    private Button btnDelete;
    private List<String> mList;
    private MyAdapter mAdapter;
    private ListView mListview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        initView();
        initData();
        mAdapter = new MyAdapter(MainActivity.this, mList);
        mListview.setAdapter(mAdapter);
    }
    
    private void initView(){
        chkSelect = (CheckBox) findViewById(R.id.chkSelect);
        btnDelete = (Button) findViewById(R.id.btnDelete);
        mListview = (ListView) findViewById(R.id.lstView);
        
        chkSelect.setOnClickListener(this);
        btnDelete.setOnClickListener(this);
        
        chkSelect.setButtonDrawable(R.drawable.r01);
    }
    
    private void initData(){
        mList = new ArrayList<String>();
        for (int i=0; i<10; i++){
            mList.add("第" + String.valueOf(i) + "条数据");
        }
    }
    
    private void selectAll(boolean x){
        for (int i=0; i<mList.size(); i++){
            mAdapter.getIsSelected().put(i, x);
        }
        if (chkSelect.isChecked()){
            chkSelect.setButtonDrawable(R.drawable.r02);
        }else{
            chkSelect.setButtonDrawable(R.drawable.r01);
        }
        mAdapter.notifyDataSetChanged();
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()){
        case R.id.chkSelect:
            selectAll(chkSelect.isChecked());
            break;
        case R.id.btnDelete:
            break;
        default:
            break;
        }
        
    }

}

MyAdapter.java:

package com.hzhi.mylistview;

import java.util.HashMap;
import java.util.List;

import android.content



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ListView的CheckBox实现全部选中/不选中,listviewcheckbox
  • ListView嵌套出现的问题,listview嵌套出现

相关文章

  • 2017-05-26Xamarin.Forms跨平台开发入门-第二部分:深入解析,
  • 2017-05-26统计nginx日志中各服务(目录)http总请求数、成功数、失败数的shell
  • 2017-05-26回收ImageView占用的图像内存,imageview占用图像
  • 2017-05-26Java的进化? Kotlin初探与集成Android项目
  • 2017-05-26Android app被系统kill的场景,androidkill
  • 2017-05-26Json解析工具的选择,Json解析工具选择
  • 2017-05-26Android开发学习之路--Camera之初体验
  • 2017-05-26Android新手入门2016(13)--阻塞对话框PopupWindow
  • 2017-05-26BaseAdapter的使用(笔记)
  • 2017-05-26Android APK免安装启动

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android pm命令详解
    • 开源图表库MPAndroidChart使用介绍之饼状图&amp;折线图&amp;柱状图,图表mpandroidchart
    • 我的android学习经历13,android学习经历13
    • BaseAdapter的使用(笔记)
    • Android开发文档翻译之-Services
    • 文件缓存(配合JSON数组),缓存配合json数组
    • 安卓开源项目周报0329,安卓开源项目0329
    • 使用WakeLock使Android应用程序保持后台唤醒,wakelockandroid
    • android 水准仪的实现(方向传感器的使用)
    • Android内存泄漏排查利器LeakCanary,androidleakcanary

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有