Как управлять пустым диапазоном в GridLayoutManager?
Я устанавливаю каталог контактов в разделе recyclerview с помощью диспетчера сетки, моя проблема в том, что заголовок также устанавливается как элемент в промежутке, если промежуток пуст.
Я пытался использовать метод SpanSizeLookup. Это не работает, как я ожидал.
layoutManager = new GridLayoutManager(getActivity(), 3);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(adapterDocument.getItemViewType(position)){
case SectionedRecyclerViewAdapter.VIEW_TYPE_HEADER:
return 3;
case SectionedRecyclerViewAdapter.VIEW_TYPE_ITEM_LOADED:
return 1;
default:
return 1;
}
}
});
Это то, что я получаю
И это то, что я действительно хочу:
Как сделать так, чтобы заголовок был в следующей строке с полной шириной? Спасибо.
1 ответ
Что -то с вашим кодом, я изменил код в onCreateView
из примера 1 в:
sectionAdapter = new SectionedRecyclerViewAdapter();
for(char alphabet = 'A'; alphabet <= 'Z';alphabet++) {
List<String> contacts = getContactsWithLetter(alphabet);
if (alphabet == 'B' || alphabet == 'D') {
contacts = Collections.emptyList();
}
if (contacts.size() > 0) {
sectionAdapter.addSection(new ContactsSection(String.valueOf(alphabet), contacts));
}
}
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
GridLayoutManager glm = new GridLayoutManager(getContext(), 3);
glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(sectionAdapter.getSectionItemViewType(position)) {
case SectionedRecyclerViewAdapter.VIEW_TYPE_HEADER:
return 3;
default:
return 1;
}
}
});
recyclerView.setLayoutManager(glm);
recyclerView.setAdapter(sectionAdapter);
и это работает нормально, это результат: