介绍
怎么在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