У меня есть ListView, который обычно является singleChoice
choiceMode
. Когда пользователь долго нажимает на элемент, я хочу ввести режим действия, который позволяет выбирать несколько элементов, чтобы они могли выполнять действие над любыми выбранными элементами.Изменить ListView selectionMode from singleChoice to multipleChoiceModal
Я могу настроить ListView
так, чтобы он находился в режиме singleChoice
, и пользователь может выбрать элементы списка, чтобы отобразить фрагмент деталей рядом с ним, и сам элемент списка показан в его активированном состоянии.
Я также возможность настроить ListView
так, что он находится в multipleChoiceModal
choiceMode
и выполняя длительное нажатие на элементе начинается режим действия и позволяет множественный выбор, но теперь ListView не допустит ни одного выбора в нормальном (без режима действия).
Как я могу использовать ListView, который находится в режиме singleChoice
, а затем перевести его в режим multipleChoiceModal
, когда элемент длинным нажатием?
Это ближайший я смог придумать:
- установить ListView в режим
singleChoice
- установить ListView-х
OnItemLongClickListener
и в этом слушателю:- установить ListView-х
OnItemLongClickListener
доnull
- установить ListView's
choiceMode
наmultipleChoiceModal
- звоните
view.performClick()
по вопросу, который был долго нажат.
- установить ListView-х
Этот подход имеет несколько проблем.
- Режим действия не запускается до второго раза, когда я долго нажимаю на элемент.
- Когда я звоню
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
вonDestroyActionMode
, я получаюjava.lang.StackOverflowError
, потому что этот метод также пытается уничтожить также режим действия (но мы еще не вернулись из уничтожения).
что должно произойти после того, как вы вводите multipleChoiceMode, выбранный 2 и вернуться к singleCheckMode? – user387184