recyclerview mit Headern und Fußzeilen
bei der Arbeit mit Recyclerview, die Notwendigkeit, Header und Fußzeile anzuzeigen, tritt häufig auf. Dies verbessert die Benutzererfahrung, indem zusätzliche Informationen oder Navigationselemente bereitgestellt werden.
Hinzufügen eines Headers
, um eine Header hinzuzufügen, ein benutzerdefiniertes Layout aufzublasen und an den LayoutManager über die AddView () -Methode zu übergeben. Zum Beispiel fügen im bereitgestellten Code -Snippet die folgenden Zeilen einen Header hinzu:
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); headerPlaceHolder = inflater.inflate(R.layout.view_header_holder_medium, null, false); layouManager.addView(headerPlaceHolder, 0);
, damit der LayoutManager eine Methode für addView () mit zwei Argumenten aufweist: die Ansicht zum Hinzufügen und seine Position innerhalb des Recyclerview. In diesem Ansatz geht davon aus, dass Sie einen benutzerdefinierten LayoutManager haben, der das Hinzufügen von Headern unterstützt. Anstatt AddView () zu verwenden, können Sie AddfoterView () verwenden oder einen benutzerdefinierten Adapter erstellen, der die Fußzeile und die normalen Elemente umgeht.
mit einem benutzerdefinierten Adapter
Eine alternative Lösung erstellen, um einen benutzerdefinierten Adapter zu erstellen, der sowohl das Header als auch den Fußball und den Fußfußfußgänger bearbeitet. Der Adapter kann dann die korrekte Anzahl von Elementen, einschließlich der Header und der Fußzeile, zurückgeben und die Ansichten für die Header- und Fußzeile in der Methode der OnCreateViewHolder () aufblasen. Eine Beispielimplementierung:
// Definieren Sie eine Konstante für den Foot -View -Typ -Typ private statische endgültige int footer_view = 1; // Überschreiben Sie die Methode onCreateViewHolder () @Override public recyclerview.viewHolder OnCreateViewHolder (ViewGroup Parent, int ViewType) { if (viewType == footer_view) { // Aufblasen Sie die Fußzeile -Sicht auf Footerview = layoutinflater.from (Kontext) .inflate (r.layout.List_item_footer, übergeordnet, false); RECHTEN SIE NEUER FOODERVIEWHALTER (FOODERVIEW); } anders { // die normale Sicht aufblasen NEWSELSCHAFTSUMPIEL = LAYOUTINFLATER.FROM (CONTEXT) .inflate (r.layout.List_item_normal, übergeordnet, false); Neue NormalviewHolder zurückgeben (NormalView); } } // Überschreiben Sie die Methode getItemViewType () @Override public int getItemviewType (int Position) { if (Position == data.size ()) { // Geben Sie den Footer_view -Typ für die Fußzeile zurück footer_view zurückgeben; } return Super.getItemViewType (Position); }
unterstützt mehrere Header und Fußzürger
// 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); }
// Erstellen Sie ein SpanSizelookup GridLayoutManager.SpanSizelookup SpanSizelookup = New GridLayoutManager.SpanSizelookup () { @Override public int getSpanSize (int Position) { // Geben Sie 1 für normale Elemente und die Anzahl der Spalten für die Fußzeile zurück if (Position == data.size ()) { return gridLayoutManager.getspancount (); } Rückkehr 1; } }; // Setzen Sie das Spansizelookup auf den GridLayoutManager GridLayoutManager.SetSpanSizelookup (SpanSizelookup); Dieser Ansatz stellt sicher, dass die Fußzeile die gesamte Breite des Recyclerviews nimmt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3