настройка Recyclerview с заголовками и нижним колонтитулом
При работе с Recyclerview необходимость отображать заголовки и нижние конечности часто возникают. Это улучшает пользовательский опыт за счет предоставления дополнительной информации или навигационных элементов.
добавление заголовка
, чтобы добавить заголовок, надуть пользовательский макет и передать его в Moodoutmanager, используя метод AddView (). Например, в предоставленном фрагменте кода в следующих строках добавляют заголовок:
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); headerPlaceHolder = inflater.inflate(R.layout.view_header_holder_medium, null, false); layouManager.addView(headerPlaceHolder, 0);
Однако для того, чтобы это работало, Layoutmanager должен иметь метод addView (), который принимает два аргумента: представление, чтобы добавить, и его положение в RecyclerView. Следовательно, этот подход предполагает, что у вас есть пользовательский Layoutmanager, который поддерживает добавление заголовков. Однако вместо использования addView () вы можете использовать AddFooterView () или создать пользовательский адаптер, который обрабатывает нижний колонтитул и обычные элементы.
, используя пользовательский адаптер
Альтернативное решение - создать пользовательский адаптер, который обрабатывает как заголовок, так и считан. Затем адаптер может вернуть правильное количество предметов, включая заголовок и нижний колонтитул, а также раздувать виды заголовка и нижнего колонтитула в методе OncreateViewholder (). Пример реализации:
]// Определить константу для типа вида нижнего колонтитула Private Static Final int comeer_view = 1; // переопределить метод OnCreateViewholder () @Override public recyclerview.viewholder OncreateViewholder (viewgroup Parent, int viewtype) { if (viewtype == cooler_view) { // надувать вид нижней части нижней части View toneview = layoutinflater.from (context) .inflate (r.layout.list_item_footer, родитель, false); вернуть Новый ToneViewholder (ToneView); } еще { // раздувать нормальный вид View normalview = layoutinflater.from (context) .inflate (r.layout.list_item_normal, parent, false); вернуть New NormalViewholder (NormalView); } } // переопределить метод getItemViewType () @Override public int getItemViewType (int position) { if (position == data.size ()) { // вернуть тип Tool_View для нижнего колонтитула return mooter_view; } return super.getItemViewType (позиция); }
поддерживает несколько заголовков и нижних колонтитулов
// Define a constant for the footer view type private static final int FOOTER_VIEW = 1; // Override the onCreateViewHolder() method @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == FOOTER_VIEW) { // Inflate the footer view View footerView = LayoutInflater.from(context).inflate(R.layout.list_item_footer, parent, false); return new FooterViewHolder(footerView); } else { // Inflate the normal view View normalView = LayoutInflater.from(context).inflate(R.layout.list_item_normal, parent, false); return new NormalViewHolder(normalView); } } // Override the getItemViewType() method @Override public int getItemViewType(int position) { if (position == data.size()) { // Return the FOOTER_VIEW type for the footer return FOOTER_VIEW; } return super.getItemViewType(position); }
// Создать Spansizeoupup Gridlayoutmanager.spansizelookup spansizelookup = new Gridlayoutmanager.spansizelookup () { @Override public int getSpansize (int position) { // Возврат 1 для обычных элементов и количество столбцов для нижнего колонтитула if (position == data.size ()) { вернуть gridlayoutmanager.getspancount (); } возврат 1; } }; // Установить Spansizeoupup на Gridlayoutmanager gridlayoutmanager.setspansizelookup (spansizeookup); Этот подход гарантирует, что нижний колонтитул занимает всю ширину переработки.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3