Android ExpandableRecyclerView使用方法详解

Android ExpandableRecyclerView使用方法详解,第1张

概述 本文为大家分享了AndroidExpandableRecyclerView的使用,供大家参考,具体内容如下

 本文为大家分享了AndroID ExpandableRecyclerVIEw的使用,供大家参考,具体内容如下

1.目前只支持两级结构。
2.支持所有组同时全部展开,支持同一时间只能展开一组。
3.GroupVIEw,ChildVIEw高度自定义。
4.支持初始化数据时,指定展开某组数据。
5.支持GroupItem,ChildItem的Onlick,OnLongClick事件。
6.展开收起带动画。

效果图:


使用步骤:加入依赖

compile 'com.drawthink:expandable-recyclervIEw:0.0.3'

1.继承BaseVIEwHolder,实现自己的VIEwHolder

1.1 在构造函数中初始化你的VIEw(包括GroupVIEw,和childVIEw).

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

public int getGroupVIEwResID()public int getChildVIEwResID()

示例代码:

public class ImageVIEwHolder extends BaseVIEwHolder {  public ImageVIEw image;  public TextVIEw tvTitle;  /**   * 初始化你的VIEw(这里包括GroupVIEw,和childVIEw)   */  public ImageVIEwHolder(Context ctx,VIEw itemVIEw,int vIEwType) {    super(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
/** * author:Drawthink * describe: * date: 2017/5/22 * T :group data * S :child data * VH :VIEwHolder */public abstract class BaseRecyclerVIEwAdapter<T,S,VH extends BaseVIEwHolder> extends RecyclerVIEw.Adapter<VH>

示例Adapter代码:

public class ImageAdapter extends BaseRecyclerVIEwAdapter<String,ImageBean,ImageVIEwHolder> {  private Context ctx;  private List datas;  private LayoutInflater mInflater;  public ImageAdapter(Context ctx,List<RecyclerVIEwData> datas) {    super(ctx,datas);    mInflater = LayoutInflater.from(ctx);    this.ctx = ctx;    this.datas = datas;  }  @OverrIDe  public voID onBindGroupHolder(ImageVIEwHolder holder,int groupPos,int position,String groupData) {    holder.tvTitle.setText(groupData);  }  @OverrIDe  public voID onBindChildpHolder(ImageVIEwHolder holder,int childPos,ImageBean childData) {    holder.image.setBackgroundResource(childData.getResID());  }  @OverrIDe  public VIEw getGroupVIEw(VIEwGroup parent) {    return mInflater.inflate(R.layout.Title_item_layout,parent,false);  }  @OverrIDe  public VIEw getChildVIEw(VIEwGroup parent) {    return mInflater.inflate(R.layout.item_image_layout,false);  }  @OverrIDe  public ImageVIEwHolder createRealVIEwHolder(Context ctx,VIEw vIEw,int vIEwType) {    return new ImageVIEwHolder(ctx,vIEw,vIEwType);  }}

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

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

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

    mDatas = new ArrayList<>();    List<ImageBean> bean1 = new ArrayList<>();    List<ImageBean> bean2 = new ArrayList<>();    List<ImageBean> bean3 = new ArrayList<>();    // 每个子列表长度可以不相同    bean1.add(new ImageBean("Dog",R.mipmap.dog));    bean1.add(new ImageBean("Dog",R.mipmap.dog));    bean2.add(new ImageBean("Cat",R.mipmap.cat));    bean3.add(new ImageBean("Bird",R.mipmap.bird));    mDatas.add(new RecyclerVIEwData("Dog",bean1,true));    mDatas.add(new RecyclerVIEwData("Cat",bean2,true));    mDatas.add(new RecyclerVIEwData("Bird",bean3,true));

所有工作以完成,现在你可以象平常使用Adapter,RecyclerVIEw一样,来愉快的写代码了。

注意:在对元数据mDatas进行增删 *** 作时,要调用adapter.notifyRecyclerVIEwData();否则会造成数据索引错乱的问题。

代码github地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android ExpandableRecyclerView使用方法详解全部内容,希望文章能够帮你解决Android ExpandableRecyclerView使用方法详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1144839.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存