在开发筛选条件相关的界面时,会用到如下界面,左栏选择一项,右边跳出子栏继续选择。如图:
实现起来也不难:
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!