listview自带的单选和多选

来源:互联网 发布:google 财务分析软件 编辑:程序博客网 时间:2024/04/30 11:55
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);
0 0