Limpar a seleção em um ListView

Olá pessoal

Sei que o ListView original tem menos recursos que CustomListView e outras opções. Mas... eu não queria recodificar o que já está pronto. O problema que tenho é o seguinte.

Crio um ListView com textos (por exemplo, 8 itens). Ao carregar, nenhum item está marcado. Quando clico em um item ele fica destacado, devido ao código abaixo (por exemplo, o item 5).

B4X:
    'As próximas 4 linhas usam a biblioteca JavaObject
    'Elas mudam a cor do item selecionado no ListView
    Private jo = ListView1 As JavaObject
    Private cdw As ColorDrawable
    cdw.Initialize(Colors.Gray, 0)
    jo.RunMethod("setSelector", Array(cdw))

Eu apago o item marcado e preencho novamente o ListView. O item que era o 6 da lista e agora ocupa a posição 5 aparece em destaque, apesar de eu não ter clicado no ListView. Aparentemente ele guarda a última posição selecionada.

Pergunta:
Existe um ListView.clearSelect ou algo que faça isso?

Tentei, sem sucesso, esse código:

B4X:
Dim jo As JavaObject = ListView1
jo.RunMethodjo("getSelectionModel", Null).RunMethod("clearSelection", Null)

Obrigado a todos.
 
Não. Tente com um "Listview.Invalidate" antes de recarregar a lista.

É simples mudar um listview para um customlistview e ele é muito mais "maleável".
Cedo ou tarde você terá problemas com o ListView que não terão solução.
Olá ASales

É... eu acabei mudando. Realmente foram necessárias poucas modificações.

Obrigado!
 
Tenta colocar como selected index = -1
Olá CableGuy

Eu tentei e não adiantou. Acabei mudando para o CustomListView mesmo. Não foram necessárias muitas alterações. E nas listas em que apenas apresento dados e não é necessário fazer nenhuma seleção eu deixei o ListView simples mesmo.

Obrigado.
 

fhveiga

Member
Olá pessoal

Sei que o ListView original tem menos recursos que CustomListView e outras opções. Mas... eu não queria recodificar o que já está pronto. O problema que tenho é o seguinte.

Crio um ListView com textos (por exemplo, 8 itens). Ao carregar, nenhum item está marcado. Quando clico em um item ele fica destacado, devido ao código abaixo (por exemplo, o item 5).

B4X:
    'As próximas 4 linhas usam a biblioteca JavaObject
    'Elas mudam a cor do item selecionado no ListView
    Private jo = ListView1 As JavaObject
    Private cdw As ColorDrawable
    cdw.Initialize(Colors.Gray, 0)
    jo.RunMethod("setSelector", Array(cdw))

Eu apago o item marcado e preencho novamente o ListView. O item que era o 6 da lista e agora ocupa a posição 5 aparece em destaque, apesar de eu não ter clicado no ListView. Aparentemente ele guarda a última posição selecionada.

Pergunta:
Existe um ListView.clearSelect ou algo que faça isso?

Tentei, sem sucesso, esse código:

B4X:
Dim jo As JavaObject = ListView1
jo.RunMethodjo("getSelectionModel", Null).RunMethod("clearSelection", Null)

Obrigado a todos.
Tenta colocar como selected index = -1
Olá CableGuy, se estivessemos em um grupo de Whats as informações seriam mais rápias, eu procurei aqui no Forum se tinha alguem falando de grupo de Whats mas o link que encontrei já está expirado.Você sabe me informar se já há algum? Eu criei esse abaixo, você pode me ajudar a divulgar para o pessoal aqui do forum?

 

Claudio Oliveira

Active Member
Licensed User
Longtime User
Salve @fhveiga !
Sou do Rio de Janeiro e entrei no grupo do WhatsApp que vc criou.
Não sou muito de interagir em redes sociais, nem por aqui nem pelo WA, mas quando eu puder ajudar de algum modo, estarei à disposição.
Eu programo mais em B4J e domino melhor essa plataforma.
Abraços e parabéns pela iniciativa.
 

MaxRosa

Member
Licensed User
Longtime User
A solução do CableGuy é a correta, é só colocar selectedIndex = -1.
 
Top