¿Es posible extender AbsListView para hacer nuevas implementaciones ListView?
He estado buscando crear una vista de lista estilísticamente diferente, como muchas otras personas, y comencé buscando extender AbsListView. Según el documento de Android, AbsListView es:
Clase base que se puede utilizar para implementar listas virtualizadas de elementos. Una lista no tiene una definición espacial aquí. Por ejemplo, las subclases de esta clase pueden mostrar el contenido de la lista en una cuadrícula, en un carrusel, como pila, etc.
Después de un esfuerzo y revisión de la implementación de ListView, parece que no es posible extender AbsListView de la manera en que ListView hace debido al acoplamiento de las dos clases y la incapacidad de acceder a ciertos miembros del paquete. Me tropecé en esta forma Romain Guy:
AbsListView y AbsSpinner están diseñados para extenderse dentro del marco. También podrían extenderse en aplicaciones de terceros, pero no expusimos todos los campos y métodos protegidos necesarios a propósito. Queremos ser muy cuidadosos en cómo exponemos tales API para no obtener cosas para extensiones futuras y cambios internos. Nuestra recomendación actual es simplemente copiar / pegar el código que necesita dentro de su aplicación.
Empecé a tratar de hacer esto, pero copiar AbsListView se convierte en un agujero de conejo de copiar en un montón de otras cosas y realmente sólo parece una propuesta de perder. Quería ver si alguien ha tenido éxito extendiendo AbsListView que podría compartir una metodología.
[1] http://developer.android.com/reference/android/widget/AbsListView.html
[2] https://groups.google.com/forum/?fromgroups#!topic/android-developers/UhbR1tpVvF0
- Actividad Recargar cada vez
- Configurar RecyclerView para trabajar como chat
- Cómo agregar varias vistas de encabezado en un ListView
- Lista de estilo de Gmail
- Carga más rápida de ListView, más rápido que el método del espectador
- NullPointerException en el widget android ArrayAdapter createViewFromResource
- Rellenar el color de la fila de vista de lista con un cierto porcentaje
- Android: ¿Qué es inflater en listview?
Hay un buen tutorial de Sony (aunque amplían AdapterView y no AbsListView) aquí:
El puesto es alrededor de 2010, pero su evaluación sigue siendo válida hoy en día. Ciertos métodos y campos necesarios están protegidos, con el fin de evitar futuras incompatibilidades que podrían resultar del cambio de los componentes internos de AbsListView.
La mejor solución es copiar el código de AbsListView en su proyecto, junto con las dependencias necesarias (el agujero de conejo que mencionó).
Mientras tanto, si quieres describir qué tipo de Vista estás intentando construir, podríamos ser capaz de señalarte en una dirección que es ligeramente más fácil que crear tu propia AbsListView?
He tenido la misma experiencia tratando de subclasificar ListView
y AbsListView
para desarrollar una hoja de cálculo desplazable 2D. Terminé con mi propia subclase de ViewGroup
que maneja el diseño y una subclase de TwoDScrollView
para manejar el desplazamiento. Las partes más difíciles están consiguiendo que los ficheros funcionen correctamente (es decir, crear y colocar nuevas vistas antes de desplazarse hacia la vista) y sincronizar las posiciones de vista entre los componentes desplazables. Con tiempo suficiente, sin embargo, es posible crear un componente robusto que extrae datos de un cursor y lo desplaza de manera bastante suave y rápida.
- Reposición / margen de ViewPager de Android entre fragmentos de página
- Animación de transición TaskStackBuilder