
本文为大家分享了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使用方法详解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)