android 列表单选 /多选/全选删除

2024-09-04 05:44

本文主要是介绍android 列表单选 /多选/全选删除,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

模拟点假数据对应的bean类 添加一个boolean值默认是flase 默认不选中,根据自己的需求

public class ProFileBean {private String pic;private String title;private boolean aBoolean;public boolean isaBoolean() {return aBoolean;}public void setaBoolean(boolean aBoolean) {this.aBoolean = aBoolean;}public String getPic() {return pic;}public void setPic(String pic) {this.pic = pic;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}
}

 下面就是适配器adapert 我的选框是小方框 控件CheckBox

public class ProFileAdapert extends RecyclerView.Adapter {private Context context;ArrayList<ProFileBean> list;public ProFileAdapert(Context context, ArrayList<ProFileBean> list) {this.context = context;this.list = list;}@NonNull@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType ) {MyRecycleHolder myRecycleHolder = new MyRecycleHolder(LayoutInflater.from(context).inflate(R.layout.item_profile, parent, false));return myRecycleHolder;}@Overridepublic void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, @SuppressLint("RecyclerView") int position) {MyRecycleHolder holder1 = (MyRecycleHolder) holder;holder1.title.setText("" + list.get(position).getTitle());//设置checkbox的选中状态holder1.itmeCheck.setChecked(list.get(position).isaBoolean());holder1.itmeCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {//点击了勾选设置成选中truelist.get(position).setaBoolean(b);}});}@Overridepublic int getItemCount() {return list == null ? 0 : list.size();}class MyRecycleHolder extends RecyclerView.ViewHolder {private ImageView imgPic;private TextView title;private CheckBox itmeCheck;public MyRecycleHolder(@NonNull View itemView) {super(itemView);imgPic = (ImageView) itemView.findViewById(R.id.imgPic);title = (TextView) itemView.findViewById(R.id.fileTitle);itmeCheck = (CheckBox) itemView.findViewById(R.id.itmeCheck);}}
}
下面是对应的 主页面 
public class ProFileFragment extends BaseDJFragment<FragmentProfileBinding> {private RecyclerView recyList;private ArrayList<ProFileBean> list = new ArrayList<>();private ProFileAdapert proFileAdapert;private TextView deleteFile;private CheckBox checkAll;boolean isnoCheckAll = false;ProFileBean proFileBean = new ProFileBean();ProFileBean proFileBean2 = new ProFileBean();ProFileBean proFileBean3 = new ProFileBean();ProFileBean proFileBean4 = new ProFileBean();ProFileBean proFileBean5 = new ProFileBean();@NonNull@Overridepublic FragmentProfileBinding provideViewBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {return FragmentProfileBinding.inflate(inflater, container, false);}@Overrideprotected void setupView(@NonNull View view, @Nullable Bundle savedInstanceState) {deleteFile = view.findViewById(R.id.deleteFile);checkAll = view.findViewById(R.id.checkAll);recyList = view.findViewById(R.id.recy_list);proFileBean.setTitle("11111111");proFileBean2.setTitle("222222");proFileBean3.setTitle("33333333");proFileBean4.setTitle("444444");proFileBean5.setTitle("55555");list.add(proFileBean);list.add(proFileBean2);list.add(proFileBean3);list.add(proFileBean4);list.add(proFileBean5);recyList.setLayoutManager(new GridLayoutManager(getActivity(), 4));recyList.setAdapter(proFileAdapert = new ProFileAdapert(getActivity(), list));//全选checkAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {if (b) {isnoCheckAll = true;for (int i = 0; i < proFileAdapert.list.size(); i++) {proFileAdapert.notifyDataSetChanged();list.get(i).setaBoolean(true);}} else {for (int i = 0; i < proFileAdapert.list.size(); i++) {list.get(i).setaBoolean(false);}isnoCheckAll = false;}proFileAdapert.notifyDataSetChanged();}});//删除deleteFile.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (isnoCheckAll) {proFileAdapert.list.clear();proFileAdapert.notifyDataSetChanged();} else {for (int i = 0; i < list.size(); i++) {if (list.get(i).isaBoolean() == true) {list.remove(i);i--;//由于删除了一个元素,所以需要将i-1}}proFileAdapert.notifyDataSetChanged();}}});}
}

主布局就是一个 CheckBox 全选  一个textview删除  一个对应的recycleview

适配器子布局 就是一个textview文字 左右一个 CheckBox单选

这篇关于android 列表单选 /多选/全选删除的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135159

相关文章

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

Python实现自动化删除Word文档超链接的实用技巧

《Python实现自动化删除Word文档超链接的实用技巧》在日常工作中,我们经常需要处理各种Word文档,本文将深入探讨如何利用Python,特别是借助一个功能强大的库,高效移除Word文档中的超链接... 目录为什么需要移除Word文档超链接准备工作:环境搭建与库安装核心实现:使用python移除超链接的

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

mybatisplus的逻辑删除过程

《mybatisplus的逻辑删除过程》:本文主要介绍mybatisplus的逻辑删除过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录myBATisplus的逻辑删除1、在配置文件中添加逻辑删除的字段2、在实体类上加上@TableLogic3、业务层正常删除即