Tôi đang sử dụng setMultiChoiceModeListener
trên Listview
để gọi Chế độ hành động để chọn nhiều mục sẽ bị xóa. Trên ListView
cuộn Tôi tải thêm dữ liệu từ máy chủ và thông báo cho bộ điều hợp. Sau khi adapter
được thông báo, Chế độ Hành động (nếu được gọi) bị hủy và được tạo lại, làm cho tiêu đề và danh sách mảng được chọn trống (Bạn có thể xem hình bên dưới). Trong khi lựa chọn mục listview vẫn còn. Tôi muốn CAB liên tục như chúng ta thấy trong ứng dụng Gmail, nơi nó không phá hủy khi tải thêm dữ liệu.Android CAB hủy sau khi listview notifydatasetchanged
Dưới đây là mã cho Action Mode
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
Item mItem = adapter.items.get(position);
if (mItem.isSection()) {
} else {
mode.setTitle(listView.getCheckedItemCount() + " Selected");
EntryItem mEntryItem = (EntryItem) mItem;
orderid = mEntryItem.orderId;
if (checked) {
selectedIdList.add(orderid);
} else {
selectedIdList.remove(orderid);
}
// Toggle the state of item after every click on it
adapter.toggleSelection(position);
}
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
if (item.getItemId() == R.id.delete){
if (selectedIdList.size() > 0) {
deleteItems(selectedIdList);
}
mode.finish();
return true;
}
return false;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.menu_main, menu);
actionMode = mode;
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
actionMode = null;
if (selectedIdList.size() > 0) {
selectedIdList.clear();
adapter.mSelectedItemsIds.clear();
}
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
});
Bất kỳ trợ giúp sẽ được đánh giá cao, cảm ơn trước.
cố gắng xóa chế độ.finish() khỏi mục có thể ngăn chặn tái tạo. –
hãy thêm nhật ký vào đây để có thể xem lại nó –
@parikdhakan 'mode.finish()' trong 'onActionItemClicked' được gọi là nhấn vào biểu tượng xóa trong' actionbar', nếu không nó sẽ không được gọi ở đó. –