Я пытаюсь сделать элементы последнего горизонтального ряда строк в виде ресайклеров. Я использую GridLayoutManager
для достижения функциональности. Используя setSpanSizeLookup
, я хочу отрегулировать размер диапазона для последней строки, как указано сообщениями на SO, но, к сожалению, я не могу отслеживать, какая строка в данный момент заполняется, поэтому моя логика не работает.
Чего я хочу достичь:
код:
static private int NUM_OF_COLUMNS = 3;
final GridLayoutManager manager = new GridLayoutManager(getBaseActivity(), NUM_OF_COLUMNS);
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
int rowNum = 0;
@Override
public int getSpanSize(int position) {
int spanSize = 1;
if(position == 0)
rowNum = 0; //reset it
//check if it is last row
int numOfRows = (int) Math.ceil((double) list.size() / NUM_OF_COLUMNS);
if(rowNum == numOfRows - 1) {
//get num of items in last row
int items = list.size() - (NUM_OF_COLUMNS * rowNum);
if(items == 1)
spanSize = 3;
}
if(rowNum % NUM_OF_COLUMNS == 0) //if last element
rowNum++;
return spanSize;
}
});
recyclerView.setLayoutManager(manager);
Выше кода управляет номером строки, так как я не знаю, как получить текущую позицию строки и столбца для сетки. Может ли кто-нибудь указать на правильное направление? Спасибо.