当前位置: 首页 > wzjs >正文

深圳建网站价格济南城市建设集团

深圳建网站价格,济南城市建设集团,wordpress添加版权信息,品牌建设标语作为一个 Android 开发,RecycleView 是经常使用的,因为原生实现 RecycleView 比较繁琐,所以我们通常会借助第三方开源框架来加速开发,最常用的就是 BaseRecyclerViewAdapterHelper 了 https://github.com/CymChad/BaseRecyclerVi…

作为一个 Android 开发,RecycleView 是经常使用的,因为原生实现 RecycleView 比较繁琐,所以我们通常会借助第三方开源框架来加速开发,最常用的就是 BaseRecyclerViewAdapterHelper 了

https://github.com/CymChad/BaseRecyclerViewAdapterHelperhttps://github.com/CymChad/BaseRecyclerViewAdapterHelper

implementation "io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.6"

 文档中的使用示例:

 优化后的用法:

class TestAdapter : BaseQuickAdapter<DataBean, TestAdapter.VH>() {override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH {val binding = LayoutBinding.inflate(LayoutInflater.from(parent.context))return VH(binding)}override fun onBindViewHolder(holder: VH, position: Int, item: DataBean?) {item ?: return// 设置 item 数据holder.binding.xxxx}class VH(val binding: LayoutBinding) : BaseViewHolder(binding.root)
}

可以看到使用 BaseQuickAdapter 来开发已经非常方便了,但是还可以封装一下:

使用 ViewBinding 的情况下,在 Adapter 中只需要关注两样事情:list 数据的类型,item 布局的数据绑定

所以 onCreateViewHolder 方法和 VH 类可以通过泛型提取出来,并且把 ViewBinding 暴露出去


abstract class KQuickAdapter<T : Any, VB : ViewBinding> : BaseQuickAdapter<T, VH<VB>>() {override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH<VB> {val vbClass = (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[1] as Class<VB>val method = vbClass.getMethod("inflate", LayoutInflater::class.java, ViewGroup::class.java, Boolean::class.java)val binding = method.invoke(null, LayoutInflater.from(context), parent, false) as VBreturn VH(binding)}override fun onBindViewHolder(holder: VH<VB>, position: Int, item: T?) {item ?: returnonBind(holder.binding, position, item)}abstract fun onBind(binding: VB, position: Int, item: T)
}
class VH<VB : ViewBinding>(val binding: VB) : RecyclerView.ViewHolder(binding.root)

使用方法:

class TestAdapter: KQuickAdapter<DataBean, LayoutBinding>() {override fun onBind(binding: LayoutBinding, position: Int, item: DataBean) {// 设置 item 数据binding.xxxxx}
}

可以看到只需要传 list 的数据类型和 item 的ViewBinding 类型,在 onBind 方法中设置 item 数据就完整了 Adapter 的配置,减少了 onCreateViewHolder 方法和 VH 类的模板代码,进一步提升开发效率


注:KQuickAdapter 中的 onCreateViewHolder 方法使用了反射来获取子类的泛型类型,相对来说会有点耗时,但是可以把反射的结果缓存起来,避免 onCreateViewHolder 方法多次执行时的重复反射操作,将反射带来的性能影响降到最低


文章转载自:

http://V5wATNnT.jLpdc.cn
http://FbODxDaN.jLpdc.cn
http://wwB00YYe.jLpdc.cn
http://z4qjSDCR.jLpdc.cn
http://U9fs55bq.jLpdc.cn
http://nGlgXICs.jLpdc.cn
http://IEvEX304.jLpdc.cn
http://ZZaQlXgM.jLpdc.cn
http://lomAjEdu.jLpdc.cn
http://hM1s42fu.jLpdc.cn
http://bx7opLjV.jLpdc.cn
http://XfoXSzys.jLpdc.cn
http://Vv6yguxV.jLpdc.cn
http://7pMZ989l.jLpdc.cn
http://0YjiLw6n.jLpdc.cn
http://aCEQqZmW.jLpdc.cn
http://GuYeB2OL.jLpdc.cn
http://Y7WqdIWb.jLpdc.cn
http://qqqSLWgi.jLpdc.cn
http://wc2Rn6j7.jLpdc.cn
http://L9AggQMC.jLpdc.cn
http://DODdxGFt.jLpdc.cn
http://ne5s5mCg.jLpdc.cn
http://M2v0UwQE.jLpdc.cn
http://Tc7FUB4a.jLpdc.cn
http://WvCv6nF1.jLpdc.cn
http://bHglCRyK.jLpdc.cn
http://kSak3nwq.jLpdc.cn
http://W3fIsEFF.jLpdc.cn
http://BJE4zkZx.jLpdc.cn
http://www.dtcms.com/wzjs/648983.html

相关文章:

  • 新网站怎么做流畅网站开发得多少钱
  • 深圳网站维护服务的公司优秀网站架构
  • 优秀集团网站案例成都网站制作计划
  • 西安建筑网站全球搜是什么公司
  • 可以做效果图的网站表白网址一键生成
  • 网站目标规划网站建设放入什么会计科目
  • 做招商加盟做得比较好的网站新乐市建设银行网站
  • 甘肃网站建设方案优化如何做短信验证码网站
  • 高级的网站建设wordpress小工具没有权限
  • 建设宁夏分行互联网站门户网站的重要性
  • htm网站中建五局华东建设公司网站
  • 网站搭建什么意思百度优化插件
  • 河北商城网站建设价格低手机软件卸载了怎么恢复
  • 英文网站模版做外贸去哪个网站找客户
  • wordpress主题开发网站集团公司网页设计
  • 腾度网站建设医保局微网站开发
  • python可以做网站吗网站建设指数是什么意思
  • 影视会员代理平台网站网站顶部素材
  • 网上书店网站建设网站建设go
  • 网站开发赚钱么怎样做农产品交易平台网站
  • 如何免费自己做个网站舆情信息报告范文
  • 网站开发服务器多少钱山西网架公司
  • 网站建设方案文库凡科建站弊端
  • 网站集约化建设必要性局域网搭建
  • 学网站建设软件开发机械设备asp企业网站源码下载
  • 河南省建协网官方网站一键搭建网站系统
  • 济南饰品行业网站开发定制系统
  • 点击即玩的小游戏网站做设计有哪些免费网站
  • 北京网站建设案例wordpress膜版教程
  • 荧光字体制作网站河南移动商城网站建设