BaseRecyclerViewAdapterHelper源码解读(六) 分组布局(1)

最后

做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。

更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

BaseRecyclerViewAdapterHelper源码解读(三) 添加动画

BaseRecyclerViewAdapterHelper源码解读(四) 上拉加载更多

BaseRecyclerViewAdapterHelper源码解读(五) header和footer完善

使用方法


实体类必须继承SectionEntity

public class MySection extends SectionEntity {

private boolean isMore;

public MySection(boolean isHeader, String header) {

super(isHeader, header);

}

public MySection(Video t) {

super(t);

}

}

我的理解:上面的Video是实体类,MySection是包装Video的实体类,之所以这样做,是为了让实体类Video可以去继承其他类,这样就不影响实体类了.

adapter构造需要传入两个布局id,第一个是item的,第二个是head的,在convert方法里面加载item数据,在convertHead方法里面加载head数据

public SectionAdapter(int layoutResId, int sectionHeadResId, List data) {

super(layoutResId, sectionHeadResId, data);

}

@Override

protected void convert(BaseViewHolder helper, MySection item) {

helper.setImageUrl(R.id.iv, (String) item.t);

}

@Override

protected void convertHead(BaseViewHolder helper,final MySection item) {

helper.setText(R.id.header, item.header);

helper.setOnClickListener(R.id.more, new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(context,item.header+“more…”,Toast.LENGTH_LONG).show();

}

});

}

实体类的公有抽象父类SectionEntity


public abstract class SectionEntity implements Serializable {

/**

  • 是否是分组header

*/

public boolean isHeader;

/**

  • 包装的实体类,可以没有

*/

public T t;

/**

  • 分组header标题

*/

public String header;

public SectionEntity(boolean isHeader, String header) {

this.isHeader = isHeader;

this.header = header;

this.t = null;

}

public SectionEntity(T t) {

this.isHeader = false;

this.header = null;

this.t = t;

}

}

首先,我们有了这个抽象的父类之后,需要实现分组的列表的实体类就必须继承自该抽象父类,然后我们在BaseSectionQuickAdapter中才好根据实体类里面的属性isHeader来分辨是否是header.

单独为分组布局定做一个BaseAdapter


public abstract class BaseSectionQuickAdapter<T extends SectionEntity, K extends BaseViewHolder>

extends BaseQuickAdapter<T, K> {

/**

  • 分组header布局id

*/

protected int mSectionHeadResId;

/**

  • 分组header类型

*/

protected static final int SECTION_HEADER_VIEW = 0x00000444;

/**

  • Same as QuickAdapter#QuickAdapter(Context,int) but with

  • some initialization data.

  • @param layoutResId The layout resource id of each item.

  • @param sectionHeadResId The section head layout id for each item

  • @param data A new list is created out of this one to avoid mutable list

*/

public BaseSectionQuickAdapter(int layoutResId, int sectionHeadResId, List data) {

super(layoutResId, data);

this.mSectionHeadResId = sectionHeadResId;

}

@Override

protected int getDefItemViewType(int position) {

//item的类型 根据实体类里的一个属性 分组RecyclerView里,要么是分组header,要么是普通item

return mData.get(position).isHeader ? SECTION_HEADER_VIEW : 0;

}

@Override

protected K onCreateDefViewHolder(ViewGroup parent, int viewType) {

//创建ViewHolder 如果是分组header,那么view是mSectionHeadResId加载出来的

if (viewType == SECTION_HEADER_VIEW)

总结

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。

我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

面试题及解析总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

大厂面试场景

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

知识点总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

大厂面试场景

[外链图片转存中…(img-sV7lxKkC-1715812873667)]

知识点总结

[外链图片转存中…(img-ANUzhY8Z-1715812873667)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值