我正在尝试实施多个列表项选择,用户可以根据操作栏上显示的菜单项执行操作。
我尝试了一种方法ListView.CHOICE_MODE_MULTIPLE_MODAL
,但此选项仅适用于API 11或更高版本。
我们是否有办法在下面的API 11中使用相同的技术,即下面的代码仅适用于API 11以上。
list.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode,
int position, long id, boolean checked) {
// Capture total checked items
final int checkedCount = list.getCheckedItemCount();
// Set the CAB title according to total checked items
mode.setTitle(checkedCount + " Selected");
// Calls toggleSelection method from ListViewAdapter Class
listviewadapter.toggleSelection(position);
}
答案 0 :(得分:1)
如果要支持API级别,请使用ActionBarSherlock MultiChoiceModeListener< 11。
解决方法是使用onItemClickListener。
列表设置:
listView = (ListView) timeline.findViewById(android.R.id.list);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setItemsCanFocus(false);
listView.setAdapter(new ListAdapter(getActivity(), R.layout.cleaning_list_item, items));
ListFragment或ListActivity的监听器:
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
SparseBooleanArray checked = listView.getCheckedItemPositions();
boolean hasCheckedElement = false;
for (int i = 0; i < checked.size() && !hasCheckedElement; i++) {
hasCheckedElement = checked.valueAt(i);
}
if (hasCheckedElement) {
if (mMode == null) {
mMode = ((SherlockFragmentActivity) getActivity()).startActionMode(new MyActionMode());
mMode.invalidate();
} else {
mMode.invalidate();
}
} else {
if (mMode != null) {
mMode.finish();
}
}
}
其中MyActionMode是ActionMode.Callback的实现:
private final class MyActionMode implements ActionMode.Callback { /* ... */ }