Estou programando em java para Android fazendo um novo aplicativo (TOP SECRET) que possui uma lista com N itens. No Android isso se chama ListView, GridView ou ViewPager (dentre outros).
No meu caso é um ViewPager, onde cada item da lista pode conter um layout com um monte de componentes (botões, texto e outros). Estes componentes podem ser adicionados pelo usuário, criando mais itens na lista.
Parece fácil: usuário clica em um botão e adiciona mais um item. Refresh na lista e tudo beleza.
E depois de uns 40 minutos para colocar tudo vindo de um banco de dados, colocar o sistema para inserir: tudo funcionou bonito!
Até que encontrei um BUG! Dava erro APENAS quando o usuário adicionava o primeiro item na lista. Não aparecia nada!
Pior ainda. Se o usuário adicionasse um monte de itens logo de cara, não dava refresh na lista e nada aparecia. Era como se nada tivesse feito...
Fóruns, stackoverflow, google, doideira em russo, e nada de descobrir porque isso acontecia. Até que encontro uma pergunta no Stack Overflow dando um monte de sugestões para resolver algo semelhante a este problema. Fiz tudo. Nada deu certo...
Depois de horas vagando na internet encontrei um código semelhante ao meu onde o maluco colocou um comentário: nunca coloque ZERO nesta variável, que define a quantidade de componentes da lista. Nunca coloque ZERO, escrevia o programador assustado em maiúsculas.
Aparentemente, se o número de itens for ZERO, em um dado momento, o componente não atualiza mais nada, mesmo que você adicione itens. Só se você destruir tudo e reconstruir. Toda a tela!
Solução bacalhau: passa a ter um primeiro item fixo que será a "capa", "título" ou "cabeçalho" dos itens. Ninguém tinha pensando nisso?
E se encher o saco coloco este item com ZERO de largura e altura! Gênio! Chamo este item de codFish...
Nenhum comentário:
Postar um comentário