您的位置:首页 > 移动开发 > Android开发

listview自带的单选和多选

2016-09-28 12:48 295 查看
1、ListView本身带有单选和多选功能,也就是说在单选模式下,它能够记住当前选中的唯一的列表项;在多选模式下,它能够记住目前选取的所有的列表项。

2、这种选择模式共有4种CHOICE_MODE_NONE,CHOICE_MODE_SINGLE,CHOICE_MODE_MULTIPLE,CHOICE_MODE_MULTIPLE_MODAL。

3、CHOICE_MODE_NONE,这是ListView默认的选择模式,当使用者点击列表项后,不会将任何点击的列表项当成被选择上的列表项。
lv.setChoiceMode(ListView.CHOICE_MODE_NONE);

4、CHOICE_MODE_SINGLE,使用这个选项模式,当使用者点击列表项后,会将最后一次点击的列表项当成被选择上的列表项。
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
// 得到一个键值对,里面只会记录
SparseBooleanArray checkedItems = lv.getCheckedItemPositions(); 

5、CHOICE_MODE_MULTIPLE,使用这个选项模式,当使用者点击列表项后,会将所有点击的列表项当成被选择上的列表项。
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
// 得到一个个键值对,里面会记录
SparseBooleanArray checkedItems = lv.getCheckedItemPositions(); 

6、CHOICE_MODE_MULTIPLE_MODAL,在CHOICE_MODE_MULTIPLE_MODAL模式中,用户必须通过长按任意一个列表项,进入多选模式,否则不能进行多选。
private class MyMultiChoiceModeListener implements ListView.MultiChoiceModeListener {

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

//添加列表项被点击后的响应
}

@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
//这里返回true
return true;
}

@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
//这里返回true
return true;
}

@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
//这里返回true
return true;
}

@Override
public void onDestroyActionMode(ActionMode mode) {

}
}

lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
ListView.MultiChoiceModeListener callback = new MyMultiChoiceModeListener();
lv.setMultiChoiceModeListener(callback);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息