¿Mostrar diferente viewType en RecyclerView basado en información en la base de datos?
Golpear un poco de un obstáculo y preguntándose cómo resolverlo, parece como el pollo y el huevo para mí, podría hacer con un nuevo par de ojos.
Tengo una base de datos con información sobre los lugares en ellos. Quiero mostrar todos los lugares ordenados por distancia en mi RecyclerView
.
- Recyclerview no llama al método Adapter: onCreateViewHolder, onBindViewHolder,
- Cómo implementar correctamente un adaptador para un ListView
- RecyclerVista el espacio entre los elementos que se expanden al desplazarse
- RecyclerView con GridLayoutManager intentando resolver wrap_content
- Eliminar fila de RecyclerView
Realmente he logrado esto ya cuando sólo hay un viewType
. Sin embargo, esto es lo que no puedo entender, tengo que mostrar una visión diferente para los lugares que están dentro de una cierta distancia para el usuario. Así que dentro de 100 metros por ejemplo.
Esa información está dentro de mi base de datos, así que cuando getItemViewType(int position)
se llama a setAdapter () mi CursorLoader
no ha terminado de sacar toda la información así que obtengo una excepción de puntero nulo.
A mi pregunta:
¿Hay una manera para que yo espere a mi CursorLoader
para terminar entonces trabajo con mi adaptador y no tener un Cursor
nulo? Cuando trato de llamar a .setAdapter()
después de que el cargador haya terminado, obtengo lo siguiente en mis registros: No adapter attached; skipping layout
No adapter attached; skipping layout
porque un RecyclerView
necesita el adaptador ser fijado cuando se crea la actividad.
Mi getItemViewType(position)
actualmente se ve así:
if (!cursor.isClosed()) { cursor.moveToPosition(position); } if (cursor.getInt(2) <= 100) { return TYPE_NEARBY; } else { return TYPE_NOT_NEARBY; }
Esencialmente necesito utilizar los datos en mi CursorLoader
para determinar el viewType
y cargar una vista diferente para esa celda. Con un ViewType funciona porque no necesito comprobar la distancia, todos son la misma vista.
¡Gracias por cualquier ayuda que pueda ofrecer!
- ¿Cómo puedo acceder al visor de un elemento en una vista de reciclador?
- ¿Cómo usar la API fluida de MvvmCross para enlazar TextView de un elemento de RecyclerView a una propiedad de su ViewModel en Android?
- RecyclerView: resalta el elemento seleccionado
- Cómo configurar la aplicación RecyclerView: layoutManager = "" de XML?
- Firebase android ¿Cómo evitar que FirebaseRecyclerAdapter se actualice automáticamente?
- RecyclerView causa problemas al reciclar
- Prueba recyclerView con Espresso, cómo realizar clics o hacer afirmaciones
- Desplazamiento abrupto con NestedScrollView en ViewPager Fragmento dentro de un CoordinatorLayout Android
Tengo este trabajo en el final gracias al comentario blackbelts.
Ejecutar el proceso en modo de depuración y todo funciona como se esperaba. Sólo tenía que asegurarse de que estaba haciendo las cosas correctas con los datos en mi onBindViewHolder(int position)
.
El problema principal era porque tenía un "holderId" int en mi ViewHolder que era diferente a mi viewType int así que probablemente sólo los confundía.
- Selector de números horizontal personalizado de Android con selector de rango
- Sugar ORM que especifica la clave de cifrado