Android列表实现单选、多选、全选、取消、删除
2018-01-30 20:19
726 查看
1.init方法中的实现
定义2个HashMap用于存储已选择的及是否可见的标志private void init() { isSelected = new HashMap<Integer, Boolean>(); isVisible = new HashMap<Integer, Boolean>(); if (mData != null && mData.size() > 0) { for (int i = 0; i < mData.size(); i++) { isSelected.put(i, false); isVisible.put(i, false); } } }
2.getView方法中的实现
@Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; if (view==null){ view= LayoutInflater.from(mContext).inflate(R.layout.item_fund,viewGroup,false); holder=new ViewHolder(); view.setTag(holder); holder.tv_name=view.findViewById(R.id.tv_name); holder.tv_code=view.findViewById(R.id.tv_code); holder.checkBox=view.findViewById(R.id.checkBox); }else { holder=(ViewHolder) view.getTag(); } if (mData!=null){ holder.tv_name.setText(mData.get(i).getName()); holder.tv_code.setText(mData.get(i).getCode()); holder.checkBox.setTag(i); if (type.equals("delete")){ if (isSelected.get(i)){ isSelected.put(i,false); } }else { } holder.checkBox.setChecked(isSelected.get(i)); if (isVisible.get(i)) { holder.checkBox.setVisibility(View.VISIBLE); } else { holder.checkBox.setVisibility(View.GONE); } } return view; }
3.Activity中的实现
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { if (isEdit) { mAdapter.type = "select"; FundListAdpater.ViewHolder holder = (FundListAdpater.ViewHolder) view.getTag(); holder.checkBox.toggle(); mAdapter.isSelected.put(position, holder.checkBox.isChecked()); } } }); @Override public void onClick(View view) { isHasSelect = false; for (int i = 0; i < datas.size(); i++) { if (mAdapter.isSelected.get(i)) { isHasSelect = true; break; } } switch (view.getId()) { case R.id.tv_edit: if (datas != null && datas.size() > 0) { if (isEdit) { tv_edit.setText("编辑"); ll_bottom.setVisibility(View.GONE); for (int i = 0; i < datas.size(); i++) { mAdapter.isVisible.put(i, false); } mAdapter.notifyDataSetChanged(); isEdit = false; } else { tv_edit.setText("完成"); ll_bottom.setVisibility(View.VISIBLE); for (int i = 0; i < datas.size(); i++) { mAdapter.isVisible.put(i, true); } mAdapter.notifyDataSetChanged(); isEdit = true; } } break; case R.id.tv_cancel: mAdapter.type = "select"; tv_cancel.setSelected(true); tv_delete.setSelected(false); if (isAllSelect) { for (int i = 0; i < datas.size(); i++) { mAdapter.isSelected.put(i, false); } } else { for (int i = 0; i < datas.size(); i++) { mAdapter.isSelected.put(i, true); } } mAdapter.notifyDataSetChanged(); isAllSelect = !isAllSelect; break; case R.id.tv_delete: mAdapter.type = "delete"; if (isHasSelect) { tv_cancel.setSelected(false); tv_delete.setSelected(true); if (deleteOrderNoList != null) { deleteOrderNoList.clear(); } for (int i = 0; i < datas.size(); i++) { if (mAdapter.isSelected.get(i)) { //FundListAdpater.ViewHolder holder = (FundListAdpater.ViewHolder) lv.getChildAt(i-lv.getFirstVisiblePosition()).getTag(); deleteOrderNoList.add(datas.get(i).getCode());//选择删除的订单号holder.tv_code.getText().toString() FundBean deleteOrder = (FundBean) lv.getItemAtPosition(i); deleteDatas.add(deleteOrder); } } deleteFund(deleteOrderNoList); } break; } } private void deleteFund(List<String> deleteOrderNoList) { if (datas != null) { datas.removeAll(deleteDatas); mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetInvalidated(); } Toast.makeText(this, deleteOrderNoList.toString(), Toast.LENGTH_LONG).show(); if (datas.size() == 0) { tv_edit.setText("编辑"); ll_bottom.setVisibility(View.GONE); for (int i = 0; i < datas.size(); i++) { mAdapter.isVisible.put(i, false); } mAdapter.notifyDataSetChanged(); isEdit = false; } }
4.效果图
相关文章推荐
- Android开发——listview中嵌套checkBox复选框实现单选、全选删除列表内容
- Android Recyclerview实现多选,单选,全选,反选,批量删除的功能
- Android 带checkbox的listView 实现多选,全选,反选,删除
- Android 带checkbox的listView 实现多选,全选,反选,删除
- Android -- 对话框 Dialog: 确定取消,单选多选,进度显示, 常用控件示例:单选多选框,下拉列表,进度条,自动完成文本框, 菜单显示
- Android笔记:列出指定目录下的文件(音乐列表为例),多选删除文件,单选播放音乐
- 关于Recyclerview 实现多选,单选,全选,反选,批量删除的功能的实现
- Android 带checkbox的listView 实现多选,全选,反选,删除
- Android使用AlertDialog实现的信息列表单选、多选对话框功能
- android listview ExpandableListView实现多选,单选,全选,edittext实现批量输入
- Android listview ExpandableListView实现多选,单选,全选,edittext实现批量输入的实例代码
- Android列表List多选何单选实现
- RecyclerView单选框删除条目,全选删除,Recyclerview 实现多选,单选,全选,反选,批量删除的步骤 1.在Recyclerview布局中添加上底部的全选和反选按钮,删除按钮,和计算
- jquery自定义风格独特的下拉列表控件(可实现单选和多选)
- android中列表选项、单选选项、多选选项对话框的使用
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- android中列表选项、单选选项、多选选项对话框的使用
- Android在listview添加checkbox实现单选多选操作问题
- Jquery 实现表格全选 反选 取消全选 删除行 增加行
- Android在listview添加checkbox实现单选多选操作问题