必须自己实现baseAdapter吗?如果提供了多选的choice_mode,为什么会没有提供简单的实现呢。。
question:
使用ListView实现多选,要求数据源使用List<T>,尝试使用SimpleAdapter配和自己定义的checkBox控件无法获得选中项,在非继承ListActivity的类中自己实现一个Adapter比较麻烦。
answer:
通过ArrayAdapter使用android.R.layout.simple_list_item_multiple_choice来实现多选必须有几个限制条件:
1.所在类必须继承ListActivity
2.必须使用内部定义的ListView的id,即ListView控件的id属性必须为 android:id="@id/android:list"
(需要注意的是存在多个ListView需要使用@id/android:list,而非@+id/android:list或者@android:id/list)
3.ListView对象通过getListView()方法获得。
ps:
使用ArrayAdapter的simple_multiple_choice解决多选从成本上来说比较小,如果数据源是cursor的可能更方便一点,但是现在数据源是List<T>,从样式上来会比较固定,需要T类自己实现toString()方法控制输出文案。