Ich verwende setMultiChoiceModeListener
auf Listview
, um den Aktionsmodus für die Auswahl mehrerer Elemente zu löschen. Auf ListView
scroll ich mehr Daten vom Server laden und den Adapter benachrichtigen. Nachdem adapter
benachrichtigt wurde, wird der Aktionsmodus (falls aufgerufen) zerstört und neu erstellt, wodurch der Titel und die ausgewählte Arraylist leer sind (Sie können das Bild unten sehen). Während die Listview-Elementauswahl bleibt. Ich möchte, dass das CAB beständig bleibt, wie wir es in der Gmail-App sehen, wo es beim Laden von mehr Daten nicht zerstört wird.Android CAB Zerstörung nach Listview notifydatasetchanged
Unten ist der Code für die Aktion Modus
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;
}
});
Jede Hilfe wird sehr geschätzt, Dank im Voraus.
versuchen Sie, mode.finish() von itemclick zu entfernen, die möglicherweise nicht neu erstellt werden kann. –
Bitte log hier hinzufügen, so können Sie es überprüfen –
@parikdhakan 'mode.finish()' in 'onActionItemClicked' wird beim Antippen des Löschsymbols in' actionbar' aufgerufen, sonst wird es dort nicht aufgerufen. –