¿Cómo hacer que RecyclerView recicle dentro de NestedScrollView?
Traté de poner varias vistas, incluyendo RecyclerView
, en un NestedScrollView
. Utilicé setNestedScrollingEnabled(false)
y parecía agradable para los conjuntos de datos pequeños, pero comenzó a ser laggy para los más grandes.
Después de pasar algún tiempo al registrar el método onCreateViewHolder()
, entendí que la vista de reciclador los crea a la vez como el antiguo ListView
. Intenté encontrar razones de tal comportamiento en los documentos de RecyclerView
, pero lo encontré en la descripción de ScrollView
:
- ¿Por qué proguard procesa AndroidManifest.xml?
- Precisión del sueño del hilo
- ¿View.setVisibility (View.VISIBLE) obliga a la vista a volver a dibujar incluso si ya es visible?
- ¿Cómo podemos optimizar (cpu & ram) esta animación de salpicadura personalizada de android?
- ¿Algún consejo sobre cómo acelerar esto en Android?
Nunca debe utilizar un ScrollView con un ListView, porque ListView se encarga de su propio desplazamiento vertical. Lo que es más importante, al hacer esto, derrota todas las optimizaciones importantes de ListView para tratar listas grandes, ya que efectivamente obliga a ListView a mostrar toda su lista de elementos para llenar el contenedor infinito proporcionado por ScrollView.
Esperaba que NestedScrollView
resolvería el problema, pero parece que no lo había hecho.
¿Hay alguna manera, por ejemplo, de usar algún LayoutManager
personalizado para usar RecyclerView
con sus optimizaciones de reciclaje de vistas?
Ps Por supuesto, conozco el método getItemViewType(int pos)
y la posibilidad de añadir encabezados y pies de página personalizados usando esta técnica, pero parece una solución fea para mí. Y sí, lo estoy utilizando en este momento, porque es mejor tener código que es más difícil de mantener que un problema de rendimiento tan grande.
- Creación de perfiles y optimización de un juego Android
- Detección de presencia de FPU en Android
- Optimización del compilador de código Java en Android
- Un método más eficiente de dibujar miles de partículas (Java / Android)
- ¿Deshacer / rehacer rápidamente con el patrón del memento / comando?
- Acelerando las operaciones de punto flotante (Android ARMv6)
- Bucle eficiente a través de la lista de Java
- Optimización de SQLite para aplicaciones de Android
Necesita cambiar el diseño como a continuación, Está utilizando el NestedScrollView
que necesita agregar la propiedad android:nestedScrollingEnabled
dentro del RecyclerView
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:card_view="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.widget.NestedScrollView android:id="@+id/YOUR_NEESTED_SCROLLVIEW" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/YOUR_RECYCLVIEW" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:nestedScrollingEnabled="false" /> </android.support.v4.widget.NestedScrollView> </LinearLayout>
- ¿Cómo configurar el botón tiene la imagen y la sombra?
- ¿Por qué el objeto cripto es necesario para la autenticación de la huella digital android?