hi-dhl/Binding

ActivityDataBinding /FragmentDataBinding 可以考虑默认绑定 lifecycleOwner

kakarrot opened this issue · 13 comments

如下:
return bind.apply {
viewBinding = this
viewBinding?.lifecycleOwner = (activity/fragment).lifecycleOwner //绑定生命周期
block?.invoke(this)
block = null
}

@kakarrot 是因为在 Activity 或者 Fragment 中使用 DataBinding 需要绑定 lifecycleOwner,如下图所示:

image

是想简化这一步操作吗?

是的, 因为这句代码是必须要写的, 那就可以直接写在默认代码实现里, 也可以少写一行代码(也可以减少忘记写这行代码出错的可能性)

嗯嗯,好的,这是个非常好的建议,今天我会把它加上,跟着下一个版本一起上,明天就可以使用了

同理, ViewHolderDataBinding 可以在 value?.invoke(this) 后增加 一句 executePendingBindings(), 可以少写一行模板代码

executePendingBindings 这个无法省略,必须在设置完 adapter 数据之后,执行一次 executePendingBindings,因为在下滑或者上拉取的时候,会动态更新数据

1.0.6 已经默认支持绑定 lifecycleOwner

1.0.6 的包gradle 导入正常, 正常sync,, build 的时候报错:

2020-12-29 10-42-48 的屏幕截图

clean/Invalidate Caches无效
改成 version 1.0.5 没问题

image

我查看了一下 阿里云 仓库是有的, 可能 jcenter 同步机制有点问题,你可以将 https://maven.aliyun.com/repository/jcenter 切换到 https://maven.aliyun.com/repository/public , public 是 central 仓库 和 jcenter 仓库的聚合仓库,有 public 就不需要 jcenter 了

如果还是有问题,欢迎添加我微信 : hi-dhl, 我给你看一下

...改成1.0.7 居然可以...,而且gradle能下载下来...
image

...改成1.0.7 居然可以...,而且gradle能下载下来...
image

看了一下,原来 库更新到1.0.7了, 只是1.0.6 确实有点问题,一直找不到

奇怪了,我这边只用 阿里云的 jcenter 仓库,下载 1.0.6 是没有问题的,不过昨天上传 1.0.6 版本的时候,确实出现了点问题,如果 1.0.7 能用,那就用最新的 1.0.7 吧 ,下次在升级版本的时候,这块我会专门在测试一下

我将要关闭这个 issue,如果还有其他问题或者建议,欢迎再次提 issue,非常感谢