Слияние кода завершено, страница обновится автоматически
Пример заголовка, который будет отображаться в шапке.
www.gaohaiyan.com<br/>
Пример адаптера RecyclerView, который использует header и recycleview.<br/>
Этот пример показывает, как использовать header.<br/>
TODO: Улучшить этот пример, добавив больше информации и примеров кода.<br/>
<li>1. Создание базового контейнера VG и Ctx для item.</li>
<li>2. Инициализация header.</li>
<li>3. Обработка item через ViewHolder.</li>
<li>4. Обработка item через ViewHolder.</li>
<li>5. Обновление данных item.</li>
<li>6. Установка headerView для управления header.</li>
Код Java:
public class HeaderRcyvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static final int TYPE_HEADER = 0; // Тип элемента - header
public static final int TYPE_NORMAL = 1; // Тип элемента - обычный
private List<NormalBean> mDatas;
private View headerView;
/**
* TODO 1. Конструктор для RecycleView Adapter с передачей списка item.
* @param list список элементов
*/
public HeaderRcyvAdapter(Context ctx, List<NormalBean> list) {
this.mDatas = list;
}
/**
* Установка headerView для управления header.
* @param bean данные для header
*/
public void setHeaderView(ViewGroup parent, HeaderBean bean){
if(null == headerView)
headerView = LayoutInflater.from(parent.getContext()).inflate(R.layout.ghy_hrcyv_header, parent, false);
((TextView)headerView.findViewById(R.id.title)).setText(bean.title);
((TextView)headerView.findViewById(R.id.note)).setText(bean.note);
notifyItemInserted(0);
}
/**
* Определение типа view для каждого элемента.
*/
@Override
public int getItemViewType(int position) {
if (headerView == null) {
return TYPE_NORMAL;
}
}
``````java
// 1. Инициализация данных
initData();
// 2. Создание адаптера
mHeaderRcyvAdapter = new HeaderRcyvAdapter(this, mNormalList);
// 3. Установка макета и адаптера для RecyclerView
mRecyclerView = (RecyclerView) findViewById(R.id.mRecyclerView);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mHeaderRcyvAdapter);
// 4. Установка header TODO Возможно, потребуется установить header вручную, так как он может отсутствовать
mHeaderRcyvAdapter.setHeaderView(mRecyclerView, mHeaderBean);
mSwipeRefresh = (SwipeRefreshLayout) findViewById(R.id.mSwipeRefresh);
mSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
initData();
mSwipeRefresh.setRefreshing(false);
mHeaderRcyvAdapter.notifyDataSetChanged(); // Обновление всех элементов
// 5. Обновление header TODO Возможно, потребуется установить header вручную, так как он может отсутствовать
mHeaderRcyvAdapter.setHeaderView(mRecyclerView, mHeaderBean);
}
});
<br/>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )