Alterar ListView choiceMode de singleChoice para multipleChoiceModal
Eu tenho um ListView que normalmente é osingleChoice
choiceMode
. Quando o usuário pressiona longamente um item, eu quero entrar em um modo de ação que permite selecionar vários itens para que eles possam executar uma ação em qualquer item selecionado.
Eu sou capaz de configurar oListView
de modo que esteja emsingleChoice
modo e o usuário pode selecionar itens de lista para exibir um fragmento de detalhes próximo a ele e ter o próprio item de lista mostrado em seu estado ativado.
Eu também sou capaz de configurar oListView
de modo que está nomultipleChoiceModal
choiceMode
e executar um toque longo em um item inicia o modo de ação e permite seleções múltiplas, mas agora o ListView não permitirá uma seleção única no modo normal (nenhum modo de ação).
Como posso ter um ListView que está emsingleChoice
modo e, em seguida, a transição paramultipleChoiceModal
modo quando um item é pressionado por muito tempo?
Isso é o mais próximo que consegui:
definir o ListView parasingleChoice
mododefinir o ListViewOnItemLongClickListener
e nesse ouvinte:definir o ListViewOnItemLongClickListener
paranull
definir o ListViewchoiceMode
paramultipleChoiceModal
ligarview.performClick()
no item que foi pressionado por muito tempo.Essa abordagem tem alguns problemas.
O modo de ação não é iniciado até a segunda vez que pressiono um item por muito tempo.Quando eu chamogetListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
emonDestroyActionMode
Eu recebo umjava.lang.StackOverflowError
porque esse método acaba tentando destruir o modo de ação também (mas nós ainda não retornamos do destroy).