1

Comment créer une vue de recyclage de grille avec 3 colonnes en rangées paires et 4 colonnes en rangées impaires?Recyclage de grille avec 3 colonnes en rangées paires et 4 colonnes en rangées impaires

lLayout = new GridLayoutManager(getActivity(), 4, LinearLayoutManager.VERTICAL, false); // MAX NUMBER OF SPACES 

    lLayout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      return (position % 3 == 0 ? 3 : 4); 
     } 
    }); 

    recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView); 
    recyclerView.setLayoutManager(lLayout); 

    if (arrayList != null) { 
     adapter = new RecyclerViewAdapter(getActivity(), arrayList); 
     recyclerView.setAdapter(adapter); 
    } 

Répondre

3

Essayez ce,

// Create a grid layout with 12 columns 
    // (least common multiple of 3 and 4) 
GridLayoutManager manager = new GridLayoutManager(this, 12, GridLayoutManager.VERTICAL, false); 
     manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
      @Override 
      public int getSpanSize(int position) { 
       // 7 is the sum of items in one repeated section 
       switch (position % 7) { 
        // first three items span 3 columns each 
        case 0: 
        case 1: 
        case 2: 
         return 4; 
        // next four items span 2 columns each 

        case 3: 
        case 4: 
        case 5: 
        case 6: 
         return 3; 
       } 
       throw new IllegalStateException("internal error"); 
      } 
     }); 
     recyclerView.setLayoutManager(manager); 

See this:

+0

il vient avec un colomn par ligne @PeterSmith –

+0

s'il vous plaît vérifier la réponse mise à jour. @AshithVL –

+0

merci beaucoup ,,, qui a fonctionné, ... mais le texte en ligne contenant 3 colomn n'est pas au centre ... pourquoi –

0

Essayez quelque chose comme ça

layoutManager = new GridLayoutManager(getActivity(), 4); 
    layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      if (position % 3 == 0) 
       return 3; 
      else 
       return 4; 
     } 
    }); 
    recyclerView.setLayoutManager(layoutManager); 

Hope this helps

+0

il vient avec un colomn par ligne @Valdio –

+0

y Vous devriez probablement enlever la ligne setHasFixedSize sur votre code –

+0

enlevé que ... mais toujours pas obtenir –