Pergunta

Eu quero gerar um ListView Isso tem alguns divisores entre algumas das entradas, como se possa ser visto em algumas das seções da propriedade. Veja o exemplo abaixo. Eu tento gerar um List que consiste em alguns TextViews seguido por um dos divisores sofisticados explicando a próxima parte da lista e depois algumas visualizações de texto. Como isso pode ser feito? Pensei em criar visualizações diferentes para adicionar à lista? É este o caminho a percorrer?

Foi útil?

Solução

Eu tenho uma solução. Não sei se é o melhor.

Eu uso um adaptador personalizado derivado de Arrayadapter para a lista, conforme descrito neste tutorial. Na classe adaptadora, verifico se a posição no método getView é uma linha normal, inflar o layout da linha. Se for a primeira linha de um novo grupo, inflar um layout de manchete que é uma linha normal, mais a manchete do grupo acima dele.

Se você não quiser misturar o cabeçalho em uma de suas linhas. Considere a seguinte solução:

Você pode substituir os dois métodos getItemViewType e getViewTyPeCount. Agora você tem uma lista que pode exibir linhas diferentes. Você precisa verificar o tipo de visualização esperado para o item no método getview e inflar layouts diferentes, dependendo dele.

A lista lidará com a reciclagem para você, de uma maneira que retornará apenas as visualizações de reciclagem corretas ao seu método GetView, isso significa que, se o RecycleView não for nulo, poderá ser usado para exibir sua célula atual.

Outras dicas

Você pode usar meu SectionedAdapter, se o GPLV3 for aceitável (licenciado dessa maneira devido a algum código a montante). Você pode usar meu MergeAdapter, se você precisar de algo mais flexível e com uma licença com menos limitação (Apache 2).

Eu acho que você pode estar procurando Android.widget.expandablelistView

http://developer.android.com/reference/android/widget/expandablelistView.html

Também estou interessado em uma resposta para isso. Deve haver uma maneira mais direta de fazer isso.

Ao olhar para o adaptador, há um método, adaptador.getItemViewType (posição int).

ListView define um valor de retorno, item_view_type_header_or_footer, que indica se o item retornado é um cabeçalho ou rodapé.

Não tentei, mas presumo que, se você criar seu próprio adaptador e devolver um item com o tipo indicando que é um cabeçalho ou rodapé, que o ListView o exibirá adequadamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top