Mam ListView, który zwykle jest singleChoice
choiceMode
. Gdy użytkownik długo naciska na element, chcę wprowadzić tryb działania, który pozwala wybrać wiele elementów, aby umożliwić wykonanie akcji na wybranych elementach.Zmień ListView choiceMode z singleChoice na multipleChoiceModal
Jestem w stanie skonfigurować ListView
tak, aby był w trybie singleChoice
i użytkownik może wybrać elementy listy, aby wyświetlić fragment szczegółów obok niego i mieć sam element listy wyświetlany w stanie aktywowanym.
Jestem również w stanie skonfigurować ListView
tak, że jest w multipleChoiceModal
choiceMode
i wykonując długie naciśnięcie elementu uruchamia tryb działania i pozwala wybrać więcej, ale teraz ListView nie pozwoli jeden wybór w normalny tryb (bez trybu akcji).
Jak mogę mieć ListView, który jest w trybie singleChoice
, a następnie przejść do trybu multipleChoiceModal
, gdy element jest długo naciśnięty?
Jest to najbliżej byłem w stanie wymyślić:
- ustawić ListView do trybu
singleChoice
- ustawić ListView na
OnItemLongClickListener
iw tym słuchacza:- ustawić ListView na
OnItemLongClickListener
donull
- ustawić ListView na
choiceMode
domultipleChoiceModal
- Zadzwoń pod numer
view.performClick()
w sprawie elementu, który był długo naciśnięty.
- ustawić ListView na
To podejście ma kilka problemów.
- Tryb akcji rozpoczyna się dopiero po drugim naciśnięciu przycisku.
- Gdy zadzwonię pod numer
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
wonDestroyActionMode
, otrzymamjava.lang.StackOverflowError
, ponieważ ta metoda kończy się również próbą zniszczenia trybu akcji (ale nie mamy jeszcze wróconych z niszczenia).
co powinno nastąpić po wprowadzeniu multipleChoiceMode, wybrane 2 i wrócić do singleCheckMode? – user387184