Ich möchte ein gitterartiges Layout mit Abschnittsüberschriften implementieren. Denken Sie an https://github.com/TonicArtos/StickyGridHeaders
Was mache ich nun:
mRecyclerView = (RecyclerView) view.findViewById(R.id.grid);
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(mAdapter.getItemViewType(position)){
case MyAdapter.TYPE_HEADER:
return 1;
case MyAdapter.TYPE_ITEM:
return 2;
default:
return -1;
}
}
});
mRecyclerView.setLayoutManager(mLayoutManager);
Jetzt haben sowohl reguläre Elemente als auch Header eine Bereichsgröße von 1. Wie löse ich das?
mAdapter.getItemViewType(position)
den richtigen Wert zurückgeben?Antworten:
Das Problem war, dass der Header eine Bereichsgröße von 2 und das reguläre Element eine Bereichsgröße von 1 haben sollte. Die korrekte Implementierung lautet also:
quelle
Der Header sollte eine Spanne haben, die der Spannenanzahl der gesamten Liste entspricht.
quelle
Antwort auf meine eigene Frage: Überschreiben Sie getSpanSizeLookup () aus der Aktivität, nachdem Sie den Adapter eingestellt haben.
quelle