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) .

  • Android Guardar objeto como blob en sqlite
  • ImageView ScaleType ignora el relleno
  • Lazy descargar imágenes en gridView
  • ¿Cómo aplicar diferentes iconos y texto diferente en el tutorial de vista de cuadrícula de Android?
  • Establecer determinado elemento en la vista de cuadrícula que no se puede hacer clic
  • Android: El botón personalizado OnClickListener no se invoca
  • Android GridView última columna que se corta
  • Cómo forzar a GridView a las celdas de carga
  • AQuery (Android Query) Cómo cargar imágenes en realidad
  • Adaptador personalizado para gridview en android
  • Inicie los Elementos GridView desde la derecha
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.