在使用recyClerview時,需要顯示標頭和頁腳經常出現。這通過提供其他信息或導航元素來增強用戶體驗。 添加標頭
layoutinflater Alflater =(layoutinflater)getActivity()。 getSystemservice(context.layout_inflater_service); HeaderPlaceHolder = Afferater.Inflate(r.layout.view_header_holder_medium,null,false); layoumanager.addview(HeaderPlaceholder,0);,但是,為了使其工作,LayoutManager必須具有一個AddView()方法,該方法採用兩個參數:要添加的視圖及其在RecyClerview中的位置。因此,此方法假設您有一個自定義的LayoutManager來支持添加標題。
添加頁腳可以使用類似的方法來添加頁腳。但是,您可以使用AddFooterview(),而不是使用AddView(),或者創建一個可以處理頁腳和普通項目的自定義適配器。
替代解決方案是創建一個自定義適配器,以處理兩個自定義適配器。然後,適配器可以返回正確數量的項目,包括標題和頁腳,並在onCreateviewHolder()方法中誇大標題和頁腳視圖。一個示例實現://為頁腳視圖類型定義常數 私有靜態final int footer_view = 1; //覆蓋onCreateviewHolder()方法 @Override public recyClerview.ViewHolder onCreateviewHolder(ViewGroup parent,int ViewType){ if(viewType == footer_view){ //充氣頁腳視圖 查看footerview = layoutinflater.from(context).inflate(r.layout.list_item_footer,parent,parent,false); 返回新的footerviewholder(footerview); } 別的 { //誇大正常視圖 查看normalView = layoutinflater.from(context).inflate(r.layout.list_item_normal,parent,parent,false); 返回新的常規持有人(normalView); } } //覆蓋getItemViewType()方法 @Override public int int getItemViewType(int位置){ if(位置== data.size()){ //返回頁腳的頁腳_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);
Handling GridLayoutManager
To support a GridLayoutManager, you can use a GridLayoutManager.SpanSizeLookup to specify the number of spans that each item should occupy.例如: //創建一個spansizelookup gridlayoutmanager.spansizelookup spansizelookup = new gridlayoutmanager.spansizelookup(){ @Override public int getpansize(int位置){ //返回1的普通項目和頁腳的列數 if(位置== data.size()){ 返回gridlayoutmanager.getSpancount(); } 返回1; } }; //將Spansizelookup設置為Gridlayoutmanager gridlayoutmanager.setspansizelookup(spansizelookup);
此方法將確保頁腳佔據recyclerview的整個寬度。免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3