Recyclerview onBindViewHolder llamó para todos los elementos cuando dentro LinearLayout con pesos
Recientemente he actualizado desde la biblioteca de soporte recyclerview-v7: 23.1.1 a recyclerview-v7: 25.1.0.
Mi diseño contiene 2 recylerviews splitted 50% en la pantalla. El código xml es el siguiente:
- AppCompatSpinner vs android.widget.Spinner para la aplicación con min SDK versión 14
- RecyclerView onBindViewHolder sólo se llama cuando los cambios getItemViewType
- Proporcionar icono a selector de sistema a través de ChooserTargetService, FileProvider y grantUriPermission
- Diferentes resultados de CardView de la Biblioteca de soporte de Android en diferentes dispositivos
- Forma de indicador de pestaña personalizada en Diseño de soporte de Widget TabLayout
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:scrollbars="none"/> <android.support.v4.widget.Space android:layout_width="@dimen/two_dp" android:layout_height="match_parent" android:background="@color/dark_gray"/> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:scrollbars="none"/> </LinearLayout>
Ahora onBindViewHolder se llama para todos los elementos de lista en lugar de sólo los elementos visibles. Esto comenzó a suceder después de la actualización a la biblioteca de soporte 25.1.0.
Está funcionando bien si los pesos se quitan, pero tener 2 recylcerviews lado a lado se requiere.
¿Cómo le digo a recyclerview que recicle las vistas en lugar de cargarlas todas?
ACTUALIZACIÓN: Funciona bien en Marshmallow y dispositivos anteriores. La edición está presente en Lollipop o abajo. Puede encontrar un proyecto de demostración aquí: https://bitbucket.org/aniketit/recyclerviewtest
- Loader: onLoadFinished sólo se llama una vez
- CardView va encima de FrameLayout, pero declaró primero
- La instalación de la biblioteca com: android: support: percent: 22.2.1 falla en Android Studio
- El uso de GridLayout de la biblioteca de soporte lleva a 'NoSuchMethodError: android.support.v4.view.ViewCompat.getLayoutDirection'
- BetterPickers sin una biblioteca de soporte
- No se pudo resolver: com.android.support:cardview-v7:26.0.0 android
- Elementos de menú de la barra de herramientas apretados después de cambiar a la biblioteca de soporte 26 y AppBarActivity a AppCompatActivity
- Android NavigationView (material support lib) no interactúa con la barra de estado correctamente
Tuve el mismo problema. RecyclerView estaba reciclando bien en Marshmallow pero no antes.
Mi error fue poner mi RecyclerView en un ScrollView. Debería comprobar si tiene una vista de desplazamiento, en caso afirmativo, eliminarla y su problema se resolverá para los dispositivos de pre-malvavisco.
Me encontré con el mismo problema que persistió después de eliminar elementos ponderados y 0dp. En mi caso, el problema era bastante trivial – yo había puesto inadvertidamente mi RecyclerView dentro de un NestedScrollView con fillViewPort = true. Esto hace que el adaptador construya todos los elementos para la vista y notará un retraso significativo en la capacidad de respuesta.
Resulta que el problema se producirá si sólo tiene el RecyclerView en un ScrollView antiguo llano también.
Con librerías> 23.1.1 puede eliminar
Android: layout_width = "0dp"
Quitarlo y todo funciona perfectamente.
- ¿Existe alguna buena API de OCR para iPhone y / o teléfonos Android?
- Integrar MuPDF como un proyecto de biblioteca (Android)