Cambiar dinámicamente el número de columnas de un GridLayoutManager

Realmente estoy usando un GridLayoutManager con dos columnas en mi aplicación y me gustaría tener una columna dependiendo del tipo de vista utilizada.

Aquí está el código que tengo en el método "onCreateView ()" de mi fragmento:

// Recycler view for users usersList = (RecyclerView) mView.findViewById(R.id.usersList); // Layout manager (grid of users layoutManager = new GridLayoutManager(mContext, 2); usersList.setLayoutManager(layoutManager); // ArrayList of users users = new ArrayList<User>(); // Set the adapter for the list of users mHomeListAdapter = new HomeListAdapter(getActivity(), users); usersList.setAdapter(mHomeListAdapter); 

Entonces, en mi adaptador, tengo este tipo de código:

 @Override public int getItemViewType(int position) { if (position == 5) { return TYPE_PREMIUM; } else { return TYPE_ITEM; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_PREMIUM) { View view = mInflater.inflate(R.layout.become_premium, parent, false); HeaderViewHolder holder = new HeaderViewHolder(view); return holder; } else { View view = mInflater.inflate(R.layout.posts_item, parent, false); ViewHolderPosts holder = new ViewHolderPosts(view); return holder; } } 

Por lo tanto, cuando se utiliza la vista "TYPE_PREMIUM", me gustaría mostrar un botón (en una columna) y tener una vista de cuadrícula normal (dos columnas) para los demás resultados.

¿Es posible hacer esto?

¡Gracias!

 mGridLayoutManager = new GridLayoutManager(mContext, 2); mGridLayoutManager.setSpanSizeLookup(onSpanSizeLookup); /** * Helper class to set span size for grid items based on orientation and device type */ GridLayoutManager.SpanSizeLookup onSpanSizeLookup = new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { return mHomeListAdapter.getItemViewType(position) == TYPE_PREMIUM ? 2 : 1; } }; 

Si entiendo su pregunta, le gustaría que las vistas de tipo premium abarquen 2 columnas en lugar de 1? Esto es posible estableciendo SpanSizeLookup personalizado con setSpanSizeLookup (SpanSizeLookup) .

  • Dinámicamente creado imageview en gridlayout no funciona
  • Eliminar el espaciado predeterminado en la vista de reciclador
  • Android - ¿cómo puedo saber cuando gridview ha llegado al fondo?
  • Android: Deshabilitar resaltado en GridView
  • Cómo cargar imágenes de Internet en gridview de manera eficiente?
  • GridView con muchas imágenes da como resultado un desplazamiento lento / áspero
  • CollapsingToolbarLayout problema con GridView
  • La altura de fila de GridView no se comporta correctamente
  • Android Guardar objeto como blob en sqlite
  • Agregar un encabezado a un GridView (Android)
  • GridView scrollBar: comportamiento errático al agregar dinámicamente imágenes
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.