Ich habe eine ListView, die normalerweise die singleChoice
ist. Wenn der Benutzer lange auf ein Element drückt, möchte ich in einen Aktionsmodus wechseln, in dem mehrere Elemente ausgewählt werden können, um eine Aktion für ausgewählte Objekte auszuführen.ListView ändern choiceMode von singleChoice zu multipleChoiceModal
Ich kann die ListView
so konfigurieren, dass es in singleChoice
Modus ist und der Benutzer in der Lage ist, Listenelemente auszuwählen, um ein Detailfragment daneben anzuzeigen und das Listenelement selbst in seinem aktivierten Zustand angezeigt zu haben.
Ich bin auch in der Lage, die ListView
so zu konfigurieren, dass es in der multipleChoiceModal
choiceMode
ist und auf ein Element langes Drücken der Durchführung startet die Action-Modus und Mehrfachauswahl erlaubt, aber jetzt ist die Listview wird eine einzige Auswahl in der normalen nicht zulassen, Modus (kein Aktionsmodus).
Wie kann ich einen ListView im singleChoice
Modus haben und ihn dann in den multipleChoiceModal
Modus umschalten, wenn ein Objekt lange gedrückt wird?
Dies ist die nächste, die ich habe in der Lage zu kommen mit:
- stellen Sie die Listview
singleChoice
Modus - das Listview Besteck
OnItemLongClickListener
und in diesem Hörer:- das Listview Besteck
OnItemLongClickListener
zunull
- setzen Sie die ListView zu
multipleChoiceModal
- rufen Sie
view.performClick()
auf dem Objekt auf, das lange gedrückt wurde.
- das Listview Besteck
Dieser Ansatz hat ein paar Probleme.
- Der Aktionsmodus wird erst beim zweiten Drücken auf ein Element gestartet.
- Wenn ich
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
inonDestroyActionMode
rufe, bekomme ich einejava.lang.StackOverflowError
, weil diese Methode versucht, auch den Aktionsmodus zu zerstören (aber wir sind noch nicht von der Zerstörung zurückgekehrt).
, was passieren soll, nachdem Sie multipleChoiceMode eingeben, ausgewählt 2 und die zurück zu singleCheckMode? – user387184