DylanCai

Results 24 comments of DylanCai

> BRV还存在KTX的优化空间吗? 我去,东哥怎么大驾光临了... 其实 BRV 结合 ViewBinding 使用会更方便一点,目前想到的封装是: ```kotlin rv.linear().setup { addType(R.layout.item_simple) onBind { // 使用 ViewBinding tvSimple.text = getModel().name } }.models = getData() ``` 对了东哥,我看源码发现 `BindingViewHolder.findView(id)` 是直接调用了 `findViewById(id)`,这里做个缓存会更好,不然每次回调 `onBindViewHolder()`...

> 1. ViewBinding可以使用泛型封装吗? 而且`onBind`的this是`BindingViewHolder`, 而且里面存在多类型判断处理 > 2. 如果想使用缓存可以使用DataBinding或ViewBinding, 并不推荐使用`findViewById`还做缓存 可以,使用泛型封装会用到反射。不用反射也可以,不过要传个高阶函数,代码看起来会稍微有点奇怪。 ```kotlin onBind(ItemSimpleBinding::bind) { tvSimple.text = getModel().name } ``` `onBind` 的 `BindingViewHolder` 可以改成用 it 获取,有需要再去取,binding 会比 holder 更常用。这个封装只适用于单类型,多类型怎么去配置我还要考虑一下。 另外文档中的 ViewBinding 用法直接调用...

> 坐看高手论道 只是和东哥交流交流,BRV 功能很多,考虑得很全面,我要先确定我的想法是不是多余的,就得去看下源码。刚好本人来了,就顺便反馈下看源码时的一点疑惑,提点小建议。

> 1. `onBind`本身就只推荐使用轻量级的视图绑定, 另外`ViewHolder`比ViewBinding使用率更高(因为MVVM主要操作的是数据) > 2. 不推荐反射, 因为列表滑动过于频繁在主线程调用反射 > 3. 如果大量视图操作还是建议实现`ItemBind`接口, 自己做`ViewBinding`对象持有可能更简单 > 4. 我更推荐DataBinding构建MVVM, `ViewBinding`只是简单去掉fbid, 而且根本不适合封装 > 5. 而且依旧没考虑到多类型场景 BRV 对 DataBinding 支持已经很好了,所以我更多的是考虑补充一些不方便用 DataBinding 情况。可能有的人觉得 DataBinding 用起来复杂,可能有人像我老大那样反感在 xml 绑定数据(我只能在部门里推一推...

这个问题有点奇怪,我自己用着没有问题,本库的示例代码直接混淆也能正常运行。我的库目前有上千个人用,有少数几个人跟我反馈过混淆问题,不清楚是什么原因导致的。

个人测试了把项目代码升级成 Gradle 7.1.2 没有出现混淆问题,代码已上传到了 [gradle7 分支](https://github.com/DylanCaiCoding/ViewBindingKTX/tree/gradle7),大家可以切换分支运行 release 验证一下。 Gradle 7.2 好像要升级成花栗鼠版本才能使用,由于看到很多人使用花栗鼠版本遇到问题,个人一直没升级。是否在 Gradle 7.2 有混淆问题,个人还没验证,可以尝试降成 7.1.2 (gradle-7.2-bin.zip) 看下问题能否解决。如果还是不行,可能需要找下其它原因,比如目前为止有过 3 个人和我反馈把 hilt 升级到 2.41 解决了。

感谢反馈,请问不同路径名是指不同 library 有同名的布局吗?

这个问题我之前做项目组件化的时候有遇到,有同名的 Binding 类可能会反射到别的模块下的同名 Binding 对象。目前没有解决思路,需要人为去避免布局名重名。 目前个人是在 build.gradle 增加下面的配置,编译器会提示资源要增加一个前缀,这样增加模块名前缀能规避一些重名问题。 ``` android { resourcePrefix "user_" } ```

抱歉,前段时间加班很多还没弄好,mavencenter 的 gradle 配置还有些问题,资料偏少而且很多的比较老。现在工作稍微缓和了些,我会尽快处理。