在使用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