Android 长按Listview显示CheckBox,实现批量删除

ListView实现的列表,如果长按某一个Item,可以显示右边隐藏的CheckBox,从而实现批量删除的功能。效果如图所示。


    


在网上看到一篇博客:Android 长按Listview显示CheckBox,实现批量删除。但是长按ListView的某一个Item后,其Item的CheckBox并未被选中,需要重新选择。

这篇博客虽然实现了长按ListView显示CheckBox并能批量删除的功能,但是用户体验并不让我满意,所以参考该博文,自己动手写了个项目。

在长按ListView的时候,长按的Item中的CheckBox会被选中,不用重新选择。之后可以继续选择其他Item的CheckBox,并实现了批量删除的功能。

自己写的例子,并未进行完善的测试,如有bug,欢迎指出。


实现思路如下:

1、在ListView的Item布局中放入CheckBox,设置其属性为不可见。新建一个list_delete,用来记录有哪些Item被选中。设置一个标识位isMultiSelect,记录是否处于多选状态。

2、在长按的时候,根据长按Item的position重新加载ListView的适配器,显示出CheckBox,根绝position将长按的Item的CheckBox设为选中状态。并将isMultiSelect设置为true。

3、处于多选状态时(isMultiSelect为true),当点击别的Item,将其数据添加到list_delete中,并勾选上相应的CheckBox。

4、底部的删除,撤销按钮也是在多选状态时才显示。点击删除时,遍历比较list_delete与数据源中的数据,相同的则从数据源中移除。完成后重新显示数据源。


具体实现代码如下:

主页面布局:

主页面布局包含一个ListView和一个隐藏布局,隐藏布局里有两个Button和一个TextView,其visibility属性默认为gone,当监听到长按事件时显示。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        
  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值