Android实现列表单选和多选,ListView+CheckedTextView

CheckedTextView + ListView

可以简单地实现单选和多选列表;


Android实现列表单选和多选,ListView+CheckedTextView_第1张图片
右侧的选框图标,可以通过 checkMark 来自定义图标

android:checkMark="@drawable/custom_single_bg"
Android实现列表单选和多选,ListView+CheckedTextView_第2张图片
drawable文件如下:



    
    
    
    

也可以在Java代码中动态设置:setCheckMarkDrawable
可以查看CheckedTextView 的源代码了解更多方法:
Android实现列表单选和多选,ListView+CheckedTextView_第3张图片
使用ListView可以设置选择模式,
setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);//多选
ListView的四种选择模式:
Android实现列表单选和多选,ListView+CheckedTextView_第4张图片
其中 CHOICE_MODE_NONE 是普通模式, CHOICE_MODE_SINGLE 是单选模式,不常用, CHOICE_MODE_MULTIPLECHOICE_MODE_MULTIPLE_MODAL 都是多选模式

ListView多选操作模式详解CHOICE_MODE_MULTIPLE与CHOICE_MODE_MULTIPLE_MODAL
CHOICE_MODE_MULTIPLE_MODAL和CHOICE_MODE_MULTIPLE恰恰相反,他是对普通点击操作和多选操作是排斥的,一旦有一个item被选中,即进入到多选状态,item的onclick事件被屏蔽。这种排斥性也是他比CHOICE_MODE_MULTIPLE多了个MODAL的原因。

ListView的 getCheckedItemPositions() 方法,其返回结果是一个 SparseBooleanArray 对象,里面包括了每个被选中项的index,以及其选中状态。
setItemChecked(int position, boolean value) 设置某一项的选中状态;
clearChoices() 清除所有选中状态;
ListView.MultiChoiceModeListener接口的方法,这是多选模式下特有的方法,监听列表项的选中状态变化,

@Override
public void onItemCheckedStateChanged(ActionMode mode,
        int position, long id, boolean checked) {
    ....
}

你可能感兴趣的:(Android)