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

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

ListView 处理Item的选中状态(checked)_第1张图片


实现起来也不难:

      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!

你可能感兴趣的:(Android总结)