A propria implementação da ListView já implementa o reuso de Views, que é o convertView que você recebe no getView().
Para melhor ainda mais a performance normalmente se usa o Pattern do ViewHolder, para não precisar fazer o findViewById() todas vezes.
Lúcio Maciel
luciofm@gmail.com
Para utiliza-lo em uma lista com mais de um layout você precisa implementar tambem o
getViewTypeCount() e getItemViewType(position) no adapter, para garantir que o convertView que você receberá é do de layout tipo certo
Lúcio Maciel
luciofm@gmail.com
2011/11/11 Elison Lusvardi <elisonj@gmail.com>
Fala caras, tudo joia?
Estou com um problema num listView de nossa aplicação.
Cada item do listView pode ser formado por widgets diferentes, alguns possuem imagens, outros o layout é diferente, outros possuem botões, etc.
Todos eles tem ações de onClick ou onLongClick - sendo no próprio widget ou em algum botão.
O desempenho então pra montar essa listView acaba sendo bem custoso pra criar cada elemento.
Resolvi então armazenar esses itens em um HashMap<Key, MyWidget> e sempre que for criar um novo item, verificar se ele ja está inserido nesse meu "cache" através da Key.
Até ai tudo bem, ele funciona de modo a buscar esses itens, e reaproveita-los; só que quando vou executar alguma ação com eles, geralmente não funciona.
Ele não detecta mais o onClick, o onLongClick até que ele esteja fora da area de visualização no listView. Por ex. eu clico na foto para abrir ela e não acontece nada. Mas quando eu dou um scroll pra cima ou pra baixo, qdo essa foto sai da minha vista, a app exibe a foto com o visualizador. Se eu aperto umas 3 ou 4 vezes seguidas, quando eu mover o Scroll, o visualizador vai ser aberto 3 ou 4 vezes.. =/
Alguém tem alguma idéia do por que isso ocorre?
valews!
--
Elison José Gracite Lusvardi






0 comentários:
Postar um comentário