¿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

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.

  • El enfoque no funciona como se esperaba en ListView
  • ¿Por qué ListView y RecyclerView son focusableInTouchMode?
  • Android: detecta si un ListView tiene la barra de desplazamiento (después de configurar nuevos datos)
  • Los elementos de ListView no se pueden hacer clic después de establecer el oyente de clics en getView ()
  • Transición lenta de Actividades: "estado de inflado de inicialización" múltiple en LogCat
  • Fuerza onSizeChanged para ListView
  • Android ListView: Cómo agregar una fila con un botón
  • Obtenga la imagen del recurso por nombre en el adaptador de cursor personalizado
  • CursorAdapter clasificación dinámica
  • Explicación del método getView () de un ArrayAdapter
  • Cómo comprobar listitem está marcada o no en listview android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.