2016-09-03 1 views
1

J'utilise un RecyclerView avec GridLayoutManager pour afficher certains éléments dans un motif de grille. Cela fonctionne bien et montre des éléments dans 2 colonnes à l'intérieur de la grille.Définir la dernière grille à pleine largeur à l'aide de GridLayoutManager (RecyclerView)

Mais lorsque le nombre d'éléments est impair, je veux que le dernier élément doit être pleine largeur (même largeur que RecyclerView).

Y at-il de toute façon de le faire en utilisant GridLayoutManager ou je dois construire un design personnalisé?

Aidez-nous s'il vous plaît.

Répondre

3

Vous pouvez utiliser layoutManager.setSpanSizeLookup méthode de GridLayoutManager

Voici la façon d'utiliser cette

final GridLayoutManager layoutManager = new GridLayoutManager(context, 2); 
     layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
     layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
      @Override 
      public int getSpanSize(int position) { 
       if (mAdapter != null) { 
        switch (mAdapter.getItemViewType(position)) { 
         case 1: 
          return 1; 
         case 0: 
          return 2; //number of columns of the grid 
         default: 
          return -1; 
        } 
       } else { 
        return -1; 
       } 
      } 
     }); 

Maintenant, vous devez déterminer le viewType dans votre adapter

@Override 
    public int getItemViewType(int position) { 
     return (isLastLogic) ? 0 : 1; // If the item is last, `itemViewType` will be 0 
    } 

continuer à construire de meilleures applications !!

+0

cela fonctionne parfaitement, merci –