DylanCaiCoding / ViewBindingKTX

The most comprehensive utils of ViewBinding. (最全面的 ViewBinding 工具,支持 Kotlin 和 Java 用法,支持 BRVAH,支持封装到基类,支持 DataBinding,支持选择是否使用反射)
Apache License 2.0
818 stars 92 forks source link

有没有办法兼容BRVAH库? #2

Closed lx36301766 closed 3 years ago

lx36301766 commented 3 years ago

Hi兄弟,非常感谢分享这个思路,我正好要用到

但我用的是adapter库是BRVAH,不是MultiType,直接使用还不太方便,需要额外再创建一个文件把BindingViewHolder拷贝出来改为继承BaseViewHolder,有没有其它办法直接兼容的?

可以看看这个issue里我的回答: https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/3138

DylanCaiCoding commented 3 years ago

如果是我要在 BRVAH 使用 ViewBinding 的话也是会这样封装,如果想不改动太多代码直接兼容,目前我有个思路。等我迟点验证一下可行的话,我会发一篇博客补充讲下 BRVAH 封装 ViewBinding 的思路。

DylanCaiCoding commented 3 years ago

目前对 BRVAH 进行了适配,添加依赖:

implementation 'com.dylanc:viewbinding-brvah-ktx:1.1.0-alpha'

在适配器重写 createBaseViewHolder() 方法,在返回值末尾添加 withBinding() 代码,然后就能通过 holder.getViewBinding() 来使用 ViewBinding 了。

class FooAdapter : BaseQuickAdapter<Foo, BaseViewHolder>(R.layout.item_foo) {

  override fun createBaseViewHolder(view: View): BaseViewHolder {
    return super.createBaseViewHolder(view).withBinding(ItemFooBinding::bind)
  }

  override fun convert(holder: BaseViewHolder, item: Foo) {
    holder.getViewBinding<ItemFooBinding>()
      .apply {
        tvFoo.text = item.value
      }
  }
}