¿Es posible usar elementos de lista expandibles con el nuevo RecyclerView? ¿Te gusta ExpandableListView?
android
android-recyclerview
Dariusz Rusin
fuente
fuente
Respuestas:
Esto es fácil de hacer con los LayoutManagers de stock, todo depende de cómo gestione su adaptador.
Cuando desee expandir una sección, simplemente agregue nuevos elementos a su adaptador después del encabezado. Recuerde llamar a notifyItemRangeInserted cuando haga esto. Para contraer una sección, simplemente elimine los elementos relevantes y llame a notifyItemRangeRemoved (). Para cualquier cambio de datos que se notifique adecuadamente, la vista del reciclador animará las vistas. Al agregar elementos, se crea un área para rellenar con los nuevos elementos, y los nuevos elementos van apareciendo. La eliminación es lo contrario. Todo lo que necesita hacer además de las cosas del adaptador es diseñar sus vistas para transmitir la estructura lógica al usuario.
Actualización: Ryan Brooks ahora ha escrito un artículo sobre cómo hacer esto.
fuente
Obtenga la implementación del código de muestra desde aquí
Establecer ValueAnimator dentro de onClick de ViewHolder
Aquí está el código final
fuente
ExpandableListView
", porque el contenido expandido en ese caso es una lista en sí misma con elementos que provienen del adaptador. Esta es una solución degenerada con solo 1 elemento permitido como niños dentro del grupo.https://github.com/gabrielemariotti/cardslib
Esta biblioteca tiene una implementación de una lista expandible con una vista de reciclaje (consulte la aplicación de demostración en "CardViewNative" -> "Lista, cuadrícula y RecyclerView" -> "Tarjetas expandibles"). También tiene muchas otras combinaciones interesantes de cartas / listas.
fuente
Alguien se quejó de que la solución mencionada anteriormente no se puede utilizar con una vista de lista como contenido expandible. Pero hay una solución simple: cree una vista de lista y complete esta vista de lista manualmente con sus filas .
Solución para los perezosos: hay una solución simple si no quieres cambiar mucho tu código. Simplemente use su adaptador manualmente para crear vistas y agréguelas al archivo
LinearLayout
.Este es el ejemplo:
funciones de ayuda: getThemeReference
clase auxiliar: ExpandUtils
Kavin Varnan ya publicó cómo animar un diseño ... Pero si quieres usar mi clase, no dudes en hacerlo, publiqué una esencia: https://gist.github.com/MichaelFlisar/738dfa03a1579cc7338a
fuente
recyclerview
y puede expandir / ocultar esta anidada y usar todas las optimizaciones delrecyclerview
Puede usar ExpandableLayout como un CheckBox de animación de expansión / contracción suave, por lo que puede usarlo como CheckBox en ListView y RecyclerView.
https://github.com/KyoSherlock/ExpandableLayout
fuente
Este es el código de muestra de lo que @TonicArtos menciona para agregar y eliminar elementos y animarlo mientras lo hace, esto se toma de la muestra de RecyclerView Animations y GitHub
1) Agregue Listener dentro de su onCreateViewHolder () para registrarse en onClick
2) Cree su OnClickListener personalizado dentro de su adaptador
3) Agregue su addItem () y deleteItem ()
4) Si su RecyclerViewAdapter no está en la misma actividad que Recycler View , pase la instancia de recyclerView al adaptador mientras crea
5) itemList es una ArrayList de tipo mObject que ayuda a mantener los estados del elemento (Abrir / Cerrar), nombre, tipo de elemento (subItems / mainItem) y establecer el tema en función de los valores
fuente