2

Ich benutze GridLayoutManager mit 2 Zellen und für einige Zellen möchte ich Span eins sein, also habe ich versucht mit setSpanSizeLookup aber es funktioniert nicht. Ich habe versucht, die Anzahl 1 für alle Positionen zurückzugeben, aber immer noch erscheinen zwei statt einer.GridLayoutManager setSpanSizeLookup funktioniert nicht

Im Anschluss an mein Code

gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      return 1; 
     } 
    }); 
    recyclerView.setLayoutManager(gridLayoutManager); 

Irgendwelche Gründe, warum es nicht funktioniert?

Antwort

3

ersetzen

return 1; 

zu

return 2; 

Diese geben Sie 2-Zellen in 1 Zelle spaning.

-Code

Hier ist mein Code für spaning 2 Zelle für bestimmte Position

GridLayoutManager glm=new GridLayoutManager(mContext,2); 
glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      switch(categoryAdapter.getItemViewType(position)) { 
       case 1: 
        return 2; 
       default: 
        return 1; 
      } 
     } 
    }); 
    mRecyclerViewCategory.setLayoutManager(glm); 

Wie Fall Spanne in Ihrem Recycler Adapter

@Override 
public int getItemViewType(int position) { 
    if(position==[your_specific_postion_where_to_span]){ 
     return 1; 
    } 
    return super.getItemViewType(position); 
} 
+0

I bei noch Position sein soll mit 2 Spannweiten und und ungerader Position mit 1 Spanne, aber die beiden Spannweiten wird nur eine der Gitterraum für die zweite Spalte gezeigt und Blätter werden nur leer! Ich möchte, dass alle Positionen sich so verhalten, als wäre es kein spezifisches. –

+0

@ NaszNjokaSr.just modifizieren 'getItemViewType' wenn Bedingung sein soll 'if (Position% 2! = 0) {return 1};' Rest des Codes wie oben –

+0

wird es sein Spanne 1 Spalte an allen ungeraden Positionen –

0

i gekämpft definieren mit Dies, wie die Dokumentation hier zu dieser Zeit schlecht ist. Ich habe es so herausgefunden ...

getSpanSize und getSpanIndex scheinen zusammen zu arbeiten. Für mich habe ich versucht, einen pageViewer in einen gridlayoutManager einzufügen, der zwei Spalten enthielt. so wurde es definiert wie: mGridLayout = new GridLayoutManager(getActivity(), 2);

//must be called before setLayoutManager is invoked 
private void setNumOfColumnsForPageViewer(final FallCollectionRecyclerAdapter adapter) { 

    mGridLayout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      if (adapter.getItemViewType(position) == MyRecyclerAdapter.TYPE_PAGE_VIEWER) 
       return 2; //some other form of item like a header, or whatever you need two spans for 
      else 
       return 1; //normal item which will take up the normal span you defined in the gridlayoutmanager constructor 
     } 

     @Override 
     public int getSpanIndex(int position, int spanCount) { 
      if (adapter.getItemViewType(position) == FallCollectionRecyclerAdapter.TYPE_PAGE_VIEWER) 
       return 1;//use a single span 
      else 
       return 2; //use two spans 
     } 
    }); 

    mRecyclerView.setLayoutManager(mGridLayout); 
} 
Verwandte Themen