Práticas recomendadas que combinam visualizações de lista e não lista, como o Market
-
19-09-2019 - |
Pergunta
Estou tentando resolver um problema que aparentemente muitos desenvolvedores Android têm, que é como intercalar listas com dados que não são de lista, em um grande painel rolável.
O modelo que tenho em mente é a tela de um aplicativo individual do Market.Você tem uma grande descrição, uma lista de alguns comentários carregados lentamente e, em seguida, alguns itens individuais que fazem coisas diferentes, como visitar a página da web do desenvolvedor, ligar para ele, etc.E entre todos eles, estão ótimos cabeçalhos de seção.
Emular essa abordagem parece ser extremamente difícil.Já li respostas suficientes do SO e postagens em listas de discussão para saber que não devo colocar um ListView dentro de um ScrollView, mas quero o mesmo efeito sem usar addHeader() e addFooter() com visualizações de cabeçalho e rodapé muito complexas.
Eu tentei usar um LinearLayout que eu mesmo armazeno com visualizações, mas não consigo obter os efeitos de clique agradáveis que os itens da lista padrão têm (fundo laranja, branco para clique longo, etc.).
O que eu faço?
Solução
Dê uma olhada no meu MergeAdapter
, que foi projetado para lidar com cenários como este.
Outras dicas
Por que não usar um cabeçalho?É fácil.Defina o conteúdo do cabeçalho em um layout separado.O layout da sua atividade contém apenas o ListView
que você deseja na parte inferior.Sem visualização de rolagem!
Em seguida, ligue
View headerView = getLayoutInflater().inflate(R.layout.header_layout, null);
ListView listView = (ListView) findViewById(R.id.my_list_view);
listView.addHeaderView(headerView, null, false);
É crucial chamar essa forma de addHeaderView
para que o cabeçalho seja desabilitado.Caso contrário, pode ser selecionado, o que parece totalmente estranho.
O exemplo de Mark funcionaria.basicamente você precisa de um adaptador com diferentes tipos de visualização.Outro bom exemplo éhttp://jsharkey.org/blog/2008/08/18/separating-lists-with-headers-in-android-09/que pode funcionar melhor que o de Mark porque você deseja ter separadores e agrupar coisas.