¿Es posible cambiar el layoutmanager para un tipo de vista diferente?
En realidad, tengo dos tipos de vista; un RecyclerView muestra los elementos en un estilo de GridLayout.
El problema es que uno de esos elementos en la cuadrícula debería mostrarse horizontalmente con un aspecto LinearLayout y los demás como cuadrícula.
¿Cómo puedo manejar esto?
override fun getItemViewType(position: Int): Int {
return if(position %5 == 0) 1 else 0
}
Este es mi RecyclerView.
binding.rv_mylist.adapter = TestAdapter()
binding.rv_mylist.layoutManager = GridLayoutManager(requireContext(), 3)
En conclusión, lo que necesito es que el ViewType 1 muestre con un LinearLayoutManager y el ViewType 0 con un GridLayoutManager.
davy.ai
Para lograr esto, puede modificar su método
getItemViewType()
para que devuelva un tipo de vista diferente para el elemento que debe mostrarse horizontalmente usando unLinearLayoutManager
. Por ejemplo:Luego, en el método
onCreateViewHolder()
de su adaptador, puede inflar un diseño diferente para cada tipo de vista:Finalmente, en el método
onBindViewHolder()
de su adaptador, puede utilizar diferentes instancias deLayoutManager
para cada tipo de vista:Tenga en cuenta que necesitará definir las clases
HorizontalViewHolder
yGridViewHolder
para mantener las referencias a las instancias deRecyclerView
en sus respectivos diseños.