Android SectionedRecyclerViewAdapter Заголовок раздела
Я использую SectionedRecyclerViewAdapter из https://github.com/luizgrp/SectionedRecyclerViewAdapter качестве адаптера для моего RecyclerView.
Мы можем добавить Section
в SectionedRecyclerViewAdapter
с Header
макет, как показано ниже:
public class Section1 extends Section {
public Section1 () {
super(
R.layout.section_1_header,
R.layout.section_1_item,
R.layout.section_1_loading,
R.layout.section_1_failed
);
}
.....
}
.....
Section1 section1 = new Section1();
section1.setState(Section.State.LOADING);
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter();
sectionAdapter.addSection(section1);
recyclerView.setAdapter(sectionAdapter);
В течение loading
состояние, я показываю вращающийся индикатор выполнения, как определено в section_1_loading.xml
, Но моя проблема заключается в header
уже отображается, когда раздел еще в loading state
, Как скрыть заголовок перед изменением состояния на loaded
?
Я думал только добавить header
Раздел после изменения состояния на loaded
, Но, кажется, не может, так как единственный способ установить заголовок Раздела в конструкторе Раздела.
У кого-нибудь есть идеи? Спасибо!
2 ответа
Попробуйте переопределить класс SectionedRecyclerViewAdapter и в onBindViewHolder
замещать
if (section.hasHeader())
от
if (section.hasHeader() && section.getState() != Section.State.LOADING)
Мне удалось заставить это работать теперь, с подсказками выше от Александра. Обходной путь:
// loading state - set no header so header section is hidden
section1.setHasHeader(false);
section1.setState(Section.State.LOADING);
....
....
// loaded state - set has header so header section is shown
section1.setHasHeader(true);
section1.setState(Section.State.LOADED);
Спасибо!