QuickViewHolder使用详解-快速轻便的ViewHolder,视图持有器

QuickViewHolder是什么东西呢,顾名思义就是快速轻便的ViewHolder,视图持有器。

 

那此组件有什么特点:

不需要根据Layout定义一大堆View,再一个一个findViewById,集成了常用绑定数据的方法,适配于所有Widget持有对象,例如RecyclerView,ListView,GroupListView等甚至连Activity与Fragment都可以。扩展灵活,代码兼容。

接下来我们看一下正常写法:

for example: 定义一个RecyclerViewViewHolder

inner class ViewHolder : RecyclerView.ViewHolder {
        lateinit var titleTv: TextView
        lateinit var userNameTv: TextView
        lateinit var ageTv: TextView
        lateinit var contentTv: TextView
        lateinit var coverIv: ImageView
        ...
        
        constructor(itemView: View) : super(itemView) {
            titleTv=itemView.findViewById(R.id.titleTv)
            userNameTv
            ageTv
            contentTv
            coverIv
                    ...
        }
    }

大概就是这样了,item项内有多少个View,就要定义多少个View用于findViewById。是个体力活

那么,接下来看下QuickViewHolder的写法

viewHolder.setText(R.id.toastMsgTv, "", View.OnClickListener {
                    QuickToast.showToastDefault("点击了内容")
              }).setText(R.id.toastMsgTv, "")
                .setImg(R.id.coverIv, R.mipmap.ic_launcher)
                .setImgRoundRect(R.id.coverIv, 5.0F, R.mipmap.ic_launcher)
                .setImgCircle(R.id.coverIv, R.mipmap.ic_launcher, View.OnClickListener {
                    QuickToast.showToastDefault("点击了头像")
                })
                ...

全程使用链式的方式绑定数据,包括设置Listener。如果需要获取对象也可以直接通过getView或者getTextView获取到

viewHolder.getView<TextView>(R.id.toastMsgTv)
viewHolder.getImageView(R.id.coverIv)

使用起来是不是简洁方便多了,去掉了令人恼火的定义变量View。

配置信息

由于图片加载框架各类烦多,考虑到兼容性,设置网络图片需要自定义实现

class BaseViewHolder(itemView: View) : QuickViewHolder(itemView) {

    override fun bindImg(context: Context, url: String, imageView: ImageView): QuickViewHolder {
        //在这里绑定普通图片
        return super.bindImg(context, url, imageView)
    }

    override fun bindImgRoundRect(context: Context, url: String, radius: Float, imageView: ImageView): QuickViewHolder {
        //在这里绑定圆角图片
        return super.bindImgRoundRect(context, url, radius, imageView)
    }

    override fun bindImgCircle(context: Context, url: String, imageView: ImageView): BaseViewHolder {
        //在这里绑定圆形图片
        return this
    }
}

继承QuickViewHolder重写上述三个方法即可。

end---------

推荐使用gradle接入

implementation 'org.quick.android:quick-component:latest.release'

统一初始化放在Application中:

QuickAndroid.init(this)

源码地址:https://github.com/SpringSmell/quick-component

好了,到这里就结束,好东西那当然要分享了,马上告诉小伙伴我发现了一个很酷的东西吧

QuickAndroid系列全家桶

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值