Android应用开发android 实现ListView嵌套Checkbox实现真正的多选、全选、反选、取消
白羽 2019-03-25 来源 :网络 阅读 983 评论 0

摘要:本文将带你了解Android应用开发android 实现ListView嵌套Checkbox实现真正的多选、全选、反选、取消,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发android 实现ListView嵌套Checkbox实现真正的多选、全选、反选、取消,希望本文对大家学Android有所帮助。



Android应用开发android 实现ListView嵌套Checkbox实现真正的多选、全选、反选、取消


android   实现ListView嵌套Checkbox实现真正的多选、全选、反选、取消
   
      我们在开发APP的时候,很多情况下会使用到ListView嵌套CheckBox的情况,例如购物车选择商品的情况,其实很多人要说这个其实很简单了,并没有那么复杂,事实上并非如此,我们在使用ListView嵌套CheckBox复选框的时候会出现很多问题,接下来我将用一篇博客来说明这些问题,给大家一些参照,解决ListView嵌套Checkbox解决复用问题。
   
  效果图如下:
   
    \
   
    首先,我们先看MainActivity中的布局,

     
       
       

    接下来看MainActivity的代码如下:

 

    package com.example.cx.listviewdemo;
     
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.Toast;
    import java.util.ArrayList;
    import java.util.List;
     
    public class MainActivity extends AppCompatActivity implements   View.OnClickListener {
     
        private ListView mLv;
        private Button mBtnSelectAll,   mBtnUnSelectAll, mBtnDelete, mBtnCancel;
        //数据源
        private List  mDataList;
     
        //与条目对应的选中状态
        private List  mCheckedList;
        private MyAdapter mAdapter;
        
        
        @Override
        protected void onCreate(Bundle   savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
            initView();
            mDataList = new   ArrayList();
            mCheckedList = new   ArrayList();
     
            for (int i = 0; i < 50;   i++) {
                mDataList.add(数据 +   i);
                  mCheckedList.add(false);
            }
            mAdapter = new   MyAdapter(MainActivity.this, mDataList);
            mAdapter.setData(mDataList,   mCheckedList);
              mLv.setAdapter(mAdapter);
     
     
              mLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void   onItemClick(AdapterView parent, View view, int position, long   id) {
                      Toast.makeText(MainActivity.this, 条目 + position + 被点击了,   Toast.LENGTH_SHORT).show();
     
                    mCheckedList.set(position,   !mCheckedList.get(position));
                      mAdapter.setData(mDataList, mCheckedList);
                      mAdapter.notifyDataSetChanged();
     
                }
            });
        }
     
        private void initView() {
            mLv = (ListView)   findViewById(R.id.lv);
            mBtnSelectAll =   findViewById(R.id.btn_all_select);
            mBtnUnSelectAll =   findViewById(R.id.btn_all_unselect);
            mBtnDelete =   findViewById(R.id.btn_delete);
            mBtnCancel =   findViewById(R.id.btn_cancel);
     
              mBtnSelectAll.setOnClickListener(this);
              mBtnUnSelectAll.setOnClickListener(this);
              mBtnDelete.setOnClickListener(this);
            mBtnCancel.setOnClickListener(this);
        }
        
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                //全选
                case   R.id.btn_all_select:
                    select_all();
                    break;
     
                //反选
                case   R.id.btn_all_unselect:
                    unselect_all();
                    break;
                    
                //删除
                case   R.id.btn_delete:
                    delete();
                    break;
     
                //取消
                case   R.id.btn_cancel:
                    cancel();
                    break;
            }
        }
     
        // 全选
        private void select_all() {
            for (int i = 0; i <   mCheckedList.size(); i++) {
                mCheckedList.set(i,   true);
            }
            mAdapter.setData(mDataList,   mCheckedList);
              mAdapter.notifyDataSetChanged();
        }
     
     
        //取消
        private void cancel() {
            for (int i = 0; i <   mCheckedList.size(); i++) {
                mCheckedList.set(i,   false);
            }
           

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程