Ich habe eine ListView, die normalerweise singleChoice
choiceMode
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 Elemente auszuführen.
Ich kann die ListView
so konfigurieren, dass sie im singleChoice
-Modus ist und der Benutzer Listenelemente auswählen kann, um ein Detailfragment daneben anzuzeigen und das Listenelement selbst in seinem aktivierten Zustand anzuzeigen.
Ich kann auch die ListView
so konfigurieren, dass sie sich in multipleChoiceModal
choiceMode
befindet und ein langes Drücken auf ein Element startet den Aktionsmodus und erlaubt mehrere Auswahlen, aber jetzt erlaubt die ListView kein Einzelauswahl im Normalmodus (kein Aktionsmodus).
Wie kann ich eine ListView im singleChoice
-Modus haben und sie dann in den multipleChoiceModal
-Modus überführen, wenn ein Objekt lange gedrückt ist?
Dies ist das nächste, was ich mir vorstellen konnte:
singleChoice
mode OnItemLongClickListener
der ListView und in diesem Listener:
OnItemLongClickListener
null
choiceMode
für das Element auf, das lange gedrückt wurde. Dieser Ansatz hat ein paar Probleme.
multipleChoiceModal
in view.performClick()
anrufe, erhalte ich getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
, weil diese Methode letztendlich auch versucht, den Aktionsmodus zu zerstören (aber wir sind noch nicht von der destroy zurückgekehrt). Ich habe das in einem meiner Programme verwendet
uns die ListView.CHOICE_MODE_MULTIPLE_MODAL
dann lv.setMultiChoiceModeListener(new ModeCallBack());
Dies ermöglicht die einfache Auswahl eines einzelnen Listenansichtsklicks und einen langen Klick auf mehrere Auswahlmöglichkeiten. Dies wurde alles aus der ICS-Messaging-App gezogen, so dass Sie auch das durchsuchen können
Es schien wirklich ein Problem mit diesem Wahlmodus zu sein, da es keine saubere und einfache Lösung gibt, die ich googlen könnte. HFM (habe einen Glaubensmann) und KISS (halte es einfach dumm) halfen;)
1.Starten Sie im Singlemode-Modus und setzen Sie alle Listener (dies geschieht dort, wo Sie den Listenadapter eingestellt haben)
%Vor%2. Implementieren Sie die Schnittstellen, um zwischen den Auswahlmodi zu wechseln. Der TRICK, um es zum Laufen zu bringen, ist, außerhalb der Implementierung zurück in den Single-Choice-Modus zu wechseln, das heißt, NACHDEM du den Aktionsmodus zerstörst !! Verwenden Sie einfach ein einfaches Flag, um die CAB-Zerstörung zu markieren. Ein weiterer TRICK ist die Rückgabe von false onItemLongClick, damit der Auswahlmodus Zeit hat, um in Kraft zu treten.
%Vor%3.Hier ist der Schalter zurück
%Vor%Tags und Links android android-3.0-honeycomb android-4.0