"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como adicionar cabeçalhos e rodapés a uma RecyclerView?

Como adicionar cabeçalhos e rodapés a uma RecyclerView?

Postado em 2025-03-24
Navegar:922

How to add Headers and Footers to a RecyclerView?

personalizando recyclerView com cabeçalhos e rodapés

ao trabalhar com reciclView, a necessidade de exibir cabeçalhos e rodapés geralmente surge. Isso aprimora a experiência do usuário fornecendo informações adicionais ou elementos de navegação. Por exemplo, no snippet de código fornecido, as seguintes linhas adicionam um cabeçalho:

layoutInflater inflater = (layoutInflater) getActivity (). GetSystemService (context.layout_inflater_service); Headplaceholder = inflater.inflate (r.layout.view_header_holder_medium, null, false); LayouManager.addview (Headerplaceholder, 0); No entanto, para que isso funcione, o LayoutManager deve ter um método AddView () que requer dois argumentos: a visualização a ser adicionada e sua posição no RecyclerView. Portanto, essa abordagem pressupõe que você tenha um manager de layout personalizado que suporta a adição de cabeçalhos. No entanto, em vez de usar addView (), você pode usar addfooterview () ou criar um adaptador personalizado que lida com o rodapé e os itens normais. O adaptador pode retornar o número correto de itens, incluindo o cabeçalho e o rodapé, e inflar as visualizações de cabeçalho e rodapé no método OnCreateViewHolder (). Um exemplo de implementação:

// define uma constante para o tipo de visualização do rodapé private static final int footer_view = 1; // Substituir o método OnCreateViewHolder () @Override public Recyclerview.ViewHolder OnCreateViewHolder (ViewGroup Parent, int ViewType) { if (ViewType == Footer_View) { // inflar a vista do rodapé View foweserview = layoutInflater.from (context) .inflate (r.layout.list_item_footer, pai, false); devolver o novo FootViewHolder (FootView); } outro { // inflar a visão normal View Normview = layoutInflater.From (context) .inflate (r.layout.list_item_normal, pai, false); retornar novo NormViewHolder (NormalView); } } // Substituir o método getItemViewType () @Override public int getItemViewType (Int Position) { if (position == data.size ()) { // retorna o tipo Footer_view para o rodapé Retornar Footer_View; } retornar super.getItemViewType (posição); }

LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
headerPlaceHolder = inflater.inflate(R.layout.view_header_holder_medium, null, false);
layouManager.addView(headerPlaceHolder, 0);
suportando vários cabeçalhos e rodapés

As abordagens descritas acima podem ser adaptadas para suportar vários cabeçalhos e rodapés. Você simplesmente precisa modificar o adaptador ou o LayoutManager personalizado para lidar com os cabeçalhos e rodapés adicionais. Por exemplo: // Crie um spansizelookup Gridlayoutmanager.ssizeLookup spansizeLookup = new GridLayoutManager.spansizeLookup () { @Override public int getSpansize (int position) { // retorna 1 para itens normais e o número de colunas para o rodapé if (position == data.size ()) { retornar gridlayoutManager.getSpancount (); } retornar 1; } }; // Defina o spansizelookup para o GridLayoutManager gridlayoutManager.SetsPansizeLookup (SpansizeLookup);

essa abordagem garantirá que o rodapé ocupe toda a largura do reciclView.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3