ListView 处理Item的选中状态(checked)

在Android开发中,创建一个筛选条件界面,当左栏选择一项时,右侧ListView显示子选项。通过设置ListView的ChoiceMode,配合Checkable接口的实现,如CheckedTextView,可以实现Item的选中状态。在单选模式下,ListView会自动处理多选冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发筛选条件相关的界面时,会用到如下界面,左栏选择一项,右边跳出子栏继续选择。如图:


实现起来也不难:

      1. 建立一个Activity,layout中包含两个FrameLayout

2.建立一个fragment,布局直接使用ListView

3.将fragment放入Activity的FrameLayout中。

4.实现Activity对fragment的赋值,以及Activity对fragment中ListView点击事件的监听

搞定!!


当然这些不是重点,重点想讲的是如何在fragment中实现选中的效果。。。

也许google考虑到了这种需求,我们可以直接对ListView进行操作。


如何操作呢?

首先,设置ListView的ChoiceMode如下:

mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
其实还有其他模式的:

   /**
     * Normal list that does not indicate choices
     */
    public static final int CHOICE_MODE_NONE = 0;

    /**
     * The list allows up to one choice
     */
    public static final int CHOICE_MODE_SINGLE = 1;

    /**
     * The list allows multiple choices
     */
    public static final int CHOICE_MODE_MULTIPLE = 2;

    /**
     * The list allows multiple choices in a modal selection mode
     */
    public static final int CHOICE_MODE_MULTIPLE_MODAL = 3;
包括单选,多选(后两个都是多选)和NONE,所以先要设置好选择模式。具体可参考 ListView多选模式详解


然后... 然后就木有然后了,已经大功告成了。

而且如果是单选模式,ListView会自动帮你把之前选择的Item去除选中状态(废话...)。


... ... 

还不行?

... ...


好吧,还有一点 Item必须是checkable的。什么意思呢? 举个例子:用TextView做Item不行,但CheckedTextView就可以了。

(我之前确实不知道还有个这样的TextView.... 惊恐


这两种TextView有什么区别呢? 

对于此文来说,CheckedTextView实现了一个叫Checkable的接口,所以只要自己的控件实现Checkable接口就没有问题了。

Over!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值