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:
- ¿Cómo actualizar un GridView?
- Necesita crear pie de página para Gridview en Android
- Android GridView - actualizar Vista basada en la posición
- ¿Cómo hacer deslizar la pantalla como picasso?
- Cómo construir este diseño utilizando GridView?
// 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!
- Visualización de imágenes de la tarjeta sd en gridview android
- Android: Cargando elementos de GridView fuera de la pantalla
- GridView con elementos cuadrados en android con ancho / altura adaptable
- GridView con colSpan y rowSpan
- Enfoque en el diseño GridView
- GridView con zoom
- Android TableLayout vs GridView vs Otros?
- Cambiar la visibilidad del elemento Gridview
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) .
- ID de registro canónico y formato ID de mensaje
- Cambiar el directorio de compilación gradle en android studio?