Tôi có một listActivity hiển thị CAB khi nhấp chuột dài. Nếu có nhiều hơn 1 mục được chọn, tôi muốn ẩn một trong các mục menu của tôi.Ẩn các mục trong Context Action Bar (CAB) động khi nhiều mục được chọn
Tôi theo dõi số mục được chọn trong onItemCheckedStateChanged()
. Tuy nhiên tôi không có quyền truy cập vào menu để xóa mục khỏi chức năng này. Xem ý kiến trong mã dưới đây để có được một ý tưởng về những gì tôi đã cố gắng. Tôi cảm thấy như tôi đang thiếu một số hiểu biết cốt lõi đơn giản ... mã dưới đây được gọi là từ chức năng onCreate()
của tôi.
private void setupActionBarContext() {
ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
private int selCount = 0;
ArrayList<Long> idList = new ArrayList<Long>();
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
if (checked) {
selCount++;
idList.add(id);
} else {
selCount--;
idList.remove(id);
}
mode.setTitle(selCount + " selected");
// I WOULD LIKE TO HIDE ITEM ON MENU IF 'selCount' IS > 1
// For example something like this...
// if (selCount > 1) {
// MenuItem item = menu.findItem(R.id.edit_item);
// item.setVisible(false);
// } else {
// MenuItem item = menu.findItem(R.id.edit_item);
// item.setVisible(false);
// }
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.delete_item:
for(Long i: idList){
mDbHelper.deleteItem(i);
}
mode.finish();
return true;
case R.id.edit_item:
Toast.makeText(getBaseContext(), "Edit Item", Toast.LENGTH_SHORT).show();
mode.finish(); // Action picked, so close the CAB
return true;
default:
return false;
}
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Inflate the menu for the CAB
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
selCount = 0;
idList.clear();
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
});
Và mục trình đơn của tôi ...
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/edit_item"
android:title="@string/edit_item"
android:showAsAction="ifRoom"
android:orderInCategory="1"/>
<item android:id="@+id/delete_item"
android:title="@string/delete_item"
android:icon="@drawable/ic_action_delete"
android:showAsAction="ifRoom"
android:orderInCategory="2"/>
</menu>
[ActionMode.invalidate] (http://developer.android.com/reference/android/view/ActionMode.html#invalidate()) – adneal
Cảm ơn, đó là những gì tôi đang tìm kiếm. –