怎么在Android中使用ExpandableRecyclerView

  介绍

怎么在Android中使用ExpandableRecyclerView ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

使用步骤:加入依赖

compile  & # 39; com.drawthink: expandable-recyclerview: 0.0.3 # 39;

1。继承BaseViewHolder,实现自己的ViewHolder

1.1在构造函数中初始化你的视图(包括GroupView,和childView)。

1.2分别实现以下两个方法,并在对应方法中返回对应布局布局文件中根节点的ID。

public  int  getGroupViewResId ()      public  int  getChildViewResId ()

示例代码:

public  class  ImageViewHolder  extends  BaseViewHolder  {      public 才能;ImageView 形象;   public 才能;TextView  tvTitle;      ,/* *   ,,*,初始化你的观点(这里包括GroupView,和childView)   ,,*/public 才能;ImageViewHolder (Context  ctx, View  itemView,, int  viewType), {   ,,,超级(ctx、itemView, viewType);   ,,,image =, (ImageView), itemView.findViewById (R.id.iv_image);   ,,,tvTitle =, (TextView) itemView.findViewById (R.id.tv_title);   ,,}      ,/* *   ,,*,@return 返回你的GroupView 布局文件中根节点的ID   ,,*/@Override才能   public 才能;int  getGroupViewResId (), {   ,,,return  R.id.group;   ,,}      ,/* *   ,,*,@return 返回你的ChildView 布局文件中根节点的ID   ,,*/@Override才能   public 才能;int  getChildViewResId (), {   ,,,return  R.id.child;   ,,}      }

2。继承BaseRecyclerViewAdapter

/* *   *大敌;作者:Drawthink   ,*描述:   ,*日期:2017/5/22   ,* T : group 数据   ,* S : child 数据   ,* VH : ViewHolder   ,*/public  abstract  class  BaseRecyclerViewAdapter, extends  RecyclerView.Adapter

示例适配器代码:

public  class  ImageAdapter  extends  BaseRecyclerViewAdapter<字符串,ImageBean ImageViewHolder>, {      private 才能;Context  ctx;   private 才能List 数据;   private 才能;LayoutInflater  mInflater;      public 才能;ImageAdapter (Context  ctx, List,数据),{   ,,,超级(ctx,资料);   ,,,mInflater =, LayoutInflater.from (ctx);   ,,,this.ctx =, ctx;   ,,,this.datas =,数据;   ,,}      @Override才能   public 才能;void  onBindGroupHolder (ImageViewHolder 持有人,int  groupPos, int 位置,,String  groupData), {   ,,,holder.tvTitle.setText (groupData);   ,,}      @Override才能   public 才能;void  onBindChildpHolder (ImageViewHolder 持有人,int  groupPos, int  childPos, int 位置,,ImageBean  childData), {   ,,,holder.image.setBackgroundResource (childData.getResId ());   ,,}      @Override才能   public 才能;View  getGroupView (ViewGroup 父母),{   ,,,return  mInflater.inflate (R.layout.title_item_layout,家长,假);   ,,}      @Override才能   public 才能;View  getChildView (ViewGroup 父母),{   ,,,return  mInflater.inflate (R.layout.item_image_layout,家长,假);   ,,}      @Override才能   public 才能;ImageViewHolder  createRealViewHolder (Context  ctx, View 看来,,int  viewType), {   ,,,return  new  ImageViewHolder (ctx、视图viewType);   ,,}   }

完成以上两步之后,基本大工告成,由于ExpandableRecyclerView的数据是要分组的,所以提供了RecyclerViewData来封装

/* *   ,,*,@param  groupData   ,,*,@param  childDatas   ,,*,@param  isExpand ,初始化展示数据时,该组数据是否展开   ,,*/public  RecyclerViewData (T  groupData, List, childDatas, boolean  isExpand)

那接下来看下数据具体是怎样封装的。

mDatas =, new  ArrayList<在();   ,,,List, bean1 =, new  ArrayList<在();   ,,,List, bean2 =, new  ArrayList<在();   ,,,List, bean3 =, new  ArrayList<在();   ,,,//,每个子列表长度可以不相同   ,,,bean1.add (new  ImageBean (“Dog",, R.mipmap.dog));   ,,,bean1.add (new  ImageBean (“Dog",, R.mipmap.dog));   null   null   null   null   null   null

怎么在Android中使用ExpandableRecyclerView