2017-02-14 5 views
0

enter image description hereWie man dieses benutzerdefinierte Raster-Layout in Android macht?

enter image description here

Ich brauche 9 square Zelle dann eine long rectangle Zelle dann wieder 9 square Zelle. Wie sollte ich eine LinearLayoutManager einrichten, um sie an RecyclerView zu übergeben?

habe ich versucht, zwei Art und Weise:

LinearLayoutManager llm2 = new LinearLayoutManager(App.getContext()); 
llm2.setOrientation(LinearLayoutManager.VERTICAL); 

Aber hier alle Artikel kommen in einer separaten Zeile.

Wenn ich es auf .HORIZONTAL setze, dann sind alle Elemente in einer langen Reihe.

GridLayoutManager Versuchte

RecyclerView.LayoutManager glm = new GridLayoutManager(App.getContext(), 3); 

Aber hier wissen nicht, wie lange Artikel zu handhaben.

Irgendeine Idee?

Antwort

0

Sie eine GridLayoutManager mit einer Spannweite von 3 schaffen könnten und die Größe von 3 in Ihrem spanSizeLookup für "langes Element" zurück:

final int spanCount = 3; 

    GridLayoutManager glm = new GridLayoutManager(this, spanCount); 
    recyclerView.setLayoutManager(glm); 

    glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      // You could also use adapter.getItemViewType(position) and check if 
      // the type of the view is "LONG_VIEW" instead of using a modulo 
      if (position % 10 == 9) { 
       return spanCount; 
      } else { 
       return 1; 
      } 
     } 
    }); 
1

können Sie setSpanCount nach jeder 9 Elemente verwenden und Sie werden eine Zeile, die eine einzelne Zelle ist.

also im Grunde müssen Sie in Ihrem Array setzen, dass Sie in Ihren Adapter ein „leeres Element“ übergeben, die eine vollständige Reihe, weil die recyclerview noch wissen muss, anzeigen würde, dass sie angezeigt werden

Beispiel:

Array

[data,data,data,data,data,data,data,data,data,"",data,data,etc...] 
Verwandte Themen