É possível usar itens de lista expansíveis com o novo RecyclerView? Gosta de ExpandableListView?
android
android-recyclerview
Dariusz Rusin
fonte
fonte
Respostas:
Isso é simples de fazer com os LayoutManagers de estoque, tudo depende de como você gerencia seu adaptador.
Quando você deseja expandir uma seção, basta adicionar novos itens ao adaptador após o cabeçalho. Lembre-se de chamar notificarItemRangeInserted ao fazer isso. Para recolher uma seção, basta remover os itens relevantes e chamar notificarItemRangeRemoved (). Para quaisquer alterações de dados que sejam notificadas adequadamente, a visualização do reciclador animará as visualizações. Ao adicionar itens, uma área a ser preenchida com os novos itens é feita, com os novos itens desaparecendo. A remoção é o oposto. Tudo o que você precisa fazer além do adaptador é definir o estilo de suas visualizações para transmitir a estrutura lógica ao usuário.
Atualização: Ryan Brooks escreveu um artigo sobre como fazer isso.
fonte
Obtenha o exemplo de implementação de código de aqui
Defina ValueAnimator dentro de onClick de ViewHolder
Aqui está o código final
fonte
ExpandableListView
", porque o conteúdo expandido, nesse caso, é uma lista com itens vindos do adaptador. Esta é uma solução degenerada com apenas 1 item permitido como filho dentro do grupo.https://github.com/gabrielemariotti/cardslib
Esta biblioteca possui uma implementação de uma lista expansível com uma visualização de reciclagem (consulte o aplicativo de demonstração em "CardViewNative" -> "List, Grid e RecyclerView" -> "Cartões expansíveis"). Ele também tem muitas outras combinações legais de cartas / listas.
fonte
Alguém reclamou que a solução mencionada acima não pode ser usada com um listview como conteúdo expansível. Mas há uma solução simples: crie um listview e preencha este listview manualmente com suas linhas .
Solução para os preguiçosos: existe uma solução simples se você não quer mudar muito o seu código. Basta usar manualmente seu adaptador para criar visualizações e adicioná-las ao
LinearLayout
.Aqui está o exemplo:
funções auxiliares: getThemeReference
classe auxiliar: ExpandUtils
Kavin Varnan postou já como animar um layout ... Mas se você quiser usar minha classe, fique à vontade para fazer isso, postei um ponto principal: https://gist.github.com/MichaelFlisar/738dfa03a1579cc7338a
fonte
recyclerview
e você pode expandir / ocultar este aninhado e usar todas as otimizações dorecyclerview
Você pode usar o ExpandableLayout como um CheckBox de animação de expansão / recolhimento suave, para que possa usá-lo como CheckBox em ListView e RecyclerView.
https://github.com/KyoSherlock/ExpandableLayout
fonte
Este é o código de amostra para o que é mencionado por @TonicArtos para adicionar e remover itens e para animá-lo enquanto faz, isto é retirado de RecyclerView Animations e amostra do GitHub
1) Adicione Listener dentro de seu onCreateViewHolder () para se registrar para onClick
2) Crie seu OnClickListener personalizado dentro de seu adaptador
3) Adicione seu addItem () e deleteItem ()
4) Se seu RecyclerViewAdapter não estiver na mesma atividade que Recycler View , passe a instância de recyclerView para o adaptador durante a criação
5) itemList é um ArrayList do tipo mObject que ajuda a manter os estados do item (abrir / fechar), nome, tipo de item (subItems / mainItem) e definir o tema com base em valores
fonte