Ich benutze RecyclerView
mit GridLayout
Manager, um Sitzbelegungslayout wie Reisen zu machen.Recycler View mit Gridlayout Manager
Mein Problem ist, wie man spancount automatisch erkennt, wenn meine Spalte zufällig ist?
Ich kenne spanCount = recyclerViewWidth/singleItemWidth;
, aber das Problem ist singleItemWidth
ist anders, da die Sitzbreite unterschiedlich ist.
Dies ist das gewünschte Layout, das ich will:
... aber ich bin zur Zeit so etwas wie dies bekommen:
Dies ist der Code I‘ m zur Anordnung des Sitzlayouts verwenden:
gridLayoutManager=new GridLayoutManager(this,totalRows, LinearLayoutManager.VERTICAL,
false);
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
int rows=Integer.parseInt(upperlist.get(position).get("row"));
return (rows);///(int) (mRecyclerView.getMeasuredWidth()/ 10);
}
});
mRecyclerView.setLayoutManager(gridLayoutManager);
MyAdapter myAdapter=new MyAdapter(this,gridArray);
... wo upperlist
diese Werte halten:
[{cols=8, seatNumber=29U, row=4, zindex=1},
{cols=6,seatNumber=23U, row=4, zindex=1},
{cols=4,seatNumber=21U,row=4, zindex=1},
{cols=2, seatNumber=11U, row=4, zindex=1},
{cols=0,seatNumber=9U,row=4, zindex=1},
{cols=8,seatNumber=25U, row=2, zindex=1},
{cols=6,seatNumber=17U, row=2, zindex=1},
{cols=4,seatNumber=13U, row=2, zindex=1},
{cols=2,seatNumber=5U, row=2, zindex=1},
{cols=10, seatNumber=D2U,row=2, zindex=1},
{cols=0, seatNumber=1U, row=2, zindex=1},
{cols=8, seatNumber=26U, row=1, zindex=1},
{cols=6,seatNumber=18U, row=1, zindex=1},
{cols=4,seatNumber=14U, row=1, zindex=1},
{cols=2,seatNumber=6U, row=1, zindex=1},
{cols=0,seatNumber=2U, row=1, zindex=1}]
Dies ist eine einzige Liste, wo ich verschiedene Werte für Zeilen und Spalten habe. Ich brauche daher eine verallgemeinerte Methode, die auf allen Layouts funktionieren kann.
alle Dinge sehen gut aus, aber wie ein leeres Element definieren (-> Viewtype) und wie addEmptyElements hinzuzufügen (! ...); ... wie soll ich wissen? Ich habe n Anzahl von empt view erforderlich – Tufan
In Bezug auf den Viewtyp könnte diese Antwort helfen: http://StackOverflow.com/a/26245463/1974562 Zum Hinzufügen von leeren Elementen, Sie sollten die Methode "addEmptyElements (...)" erstellen und alle Punkte, die kein "Bett" haben, mit leeren Elementen füllen. Es gibt leider keine Möglichkeit, dies leicht zu tun, so dass Sie z.Iteriere die Liste, extrahiere alle Positionen, die nicht von einem Bett besetzt sind, und füge an diesen Stellen leere Elemente hinzu. Sie können die Datenstruktur auch so ändern, dass Sie sie einfacher verwalten können (z. B. alle Elemente einer Zeile in einem "Row" -Objekt gruppieren). – Johannes