RecyclerView悬浮吸顶Header,支持点击事件与状态绑定。
依赖compile'com.yuyag:stickyheaders:1.0.0'用法HeaderModelHeaderModel需要实现 StickyHeaderModel 接口
publicclassHeaderItemimplemetsStickyHeaderModel{publicfialStrigtitle;/***状态保存示例,如果header存在一些交互性行为,在oBidViewHolder里面需要绑定悬浮header的状态*/publicitcolor=0xff777777;publicHeaderItem(Strigtitle){this.title=title;}}publicclassItem{publicfialStrigtitle;publicfialStrigmessage;publicItem(Strigtitle,Strigmessage){this.title=title;this.message=message;}}AdapterRecyclerViewAdapter需要实现 StickyHeaderProvider 接口,并在 getAdapterData() 返回model数据,用于判断对应positio是否为Header
publicfialclassRecyclerAdapterextedsRecyclerView.Adapter<RecyclerAdapter.BaseViewHolder>implemetsStickyHeaderProvider{privatefialList<Object>dataList=ewArrayList<>();@OverridepublicBaseViewHolderoCreateViewHolder(ViewGroupparet,itviewType){if(viewType==0){returewItemViewHolder(LayoutIflater.from(paret.getCotext()).iflate(R.layout.item_view,paret,false));}else{returewHeaderViewHolder(LayoutIflater.from(paret.getCotext()).iflate(R.layout.header_view,paret,false));}}@OverridepublicvoidoBidViewHolder(fialBaseViewHolderholder,fialitpositio){}@OverridepublicitgetItemCout(){returdataList.size();}@OverridepublicitgetItemViewType(itpositio){returdataList.get(positio)istaceofItem?0:1;}@OverridepublicList<?>getAdapterData(){returdataList;}privatestaticfialclassItemViewHolderextedsBaseViewHolder{TextViewtitleTextView;TextViewmessageTextView;ItemViewHolder(ViewitemView){super(itemView);titleTextView=itemView.fidViewById(R.id.tv_title);messageTextView=itemView.fidViewById(R.id.tv_message);}}privatestaticfialclassHeaderViewHolderextedsBaseViewHolder{TextViewtitleTextView;TextViewbutto;HeaderViewHolder(ViewitemView){super(itemView);titleTextView=itemView.fidViewById(R.id.tv_title);butto=itemView.fidViewById(R.id.butto);}}staticclassBaseViewHolderextedsRecyclerView.ViewHolder{BaseViewHolder(ViewitemView){super(itemView);}}}RecyclerViewRecyclerViewrecyclerView=fidViewById(R.id.recycler_view);RecyclerAdapteradapter=ewRecyclerAdapter();adapter.setDataList(geDataList(0));//StickyLiearLayoutMaager替代LiearLayoutMaagerStickyLiearLayoutMaagerlayoutMaager=ewStickyLiearLayoutMaager(this,adapter);recyclerView.setLayoutMaager(layoutMaager);recyclerView.setAdapter(adapter);
评论