レイヤリバーをヘッダーとフッターでカスタマイズする
Recyclerviewを使用すると、ヘッダーとフッターを表示する必要があることがよくあります。これにより、追加情報またはナビゲーション要素を提供することでユーザーエクスペリエンスが向上します。たとえば、提供されたコードスニペットでは、次の行にヘッダーが追加されます。 headerplaceholder = inflater.inflate(r.layout.view_header_holder_medium、null、false); Layoumanager.addview(headerplaceholder、0);
しかし、これが機能するには、レイアウトマネージャーには、2つの引数を取るAddView()メソッドが必要です。したがって、このアプローチでは、ヘッダーの追加をサポートするカスタムレイアウトマネージャーがあることを想定しています。ただし、addView()を使用する代わりに、addfooterview()を使用するか、フッターと通常のアイテムを処理するカスタムアダプターを作成できます。アダプターは、ヘッダーとフッターを含む正しい数のアイテムを返すことができ、oncreateviewholder()メソッドのヘッダーとフッタービューを膨らませることができます。実装の例: //フッタービュータイプの定数を定義します プライベート静的最終int footer_view = 1; // oncreateviewholder()メソッドをオーバーライドします @オーバーライド public recyclerview.viewholder oncreateviewholder(viewgroup parent、int viewtype){ if(ViewType == FOOTER_VIEW){ //フッタービューを膨らませます footerview = layoutinflater.from(context).inflate(r.layout.list_item_footer、parent、false)を表示します。 新しいfooterviewholder(footerview)を返します。 } それ以外 { //通常のビューを膨らませます remormview = layoutinflater.from(context).inflate(r.layout.list_item_normal、parent、false)を表示します。 新しいnormorviewHolder(normalview)を返します。 } } // getItemViewType()メソッドをオーバーライドします @オーバーライド public int getItemViewType(int position){ if(position == data.size()){ //フッターのfooter_viewタイプを返します footer_viewを返します。 } super.getItemViewType(位置)を返します。 }
複数のヘッダーとフッターをサポート
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); headerPlaceHolder = inflater.inflate(R.layout.view_header_holder_medium, null, false); layouManager.addView(headerPlaceHolder, 0);
上記のアプローチは、複数のヘッダーとフッターをサポートするように適合させることができます。追加のヘッダーとフッターを処理するためにアダプターまたはカスタムレイアウトマネージャーを変更するだけです。例:
// Spansizelookupを作成します gridlayoutmanager.spansizelookup spansizelookup = new gridlayoutmanager.spansizelookup(){ @オーバーライド public int getSpansize(int position){ //通常のアイテムの場合は1を返し、フッターの列数を返します if(position == data.size()){ return gridlayoutmanager.getSpancount(); } 返品1; } }; // SpansizelookupをGridlayoutManagerに設定します gridlayoutmanager.setspansizelookup(spansizelookup); このアプローチは、フッターがリサイクル環の全体の幅を占めることを保証します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3