Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.0.0-beta2 convert item可空不合理 #3001

Closed
Reginer opened this issue Dec 26, 2019 · 20 comments
Closed

3.0.0-beta2 convert item可空不合理 #3001

Reginer opened this issue Dec 26, 2019 · 20 comments

Comments

@Reginer
Copy link

Reginer commented Dec 26, 2019

convert被调用肯定有对应的item

protected abstract fun convert(helper: VH, item: T?)

应改为

protected abstract fun convert(helper: VH, item: T)
@limuyang2
Copy link
Collaborator

请考虑以下情况�:

ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add(null); // item 为 null
list.add("2");

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

这已经脱离了使用范围啦

@limuyang2
Copy link
Collaborator

这种情况无法排除

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

实际使用的过程中必然是不会出现专门为了给recyclerview加个空item加个给list加个null。既然不会出现,有这种情况直接报错无可厚非呀。
另外item直接可空之后,给setText(id, StringRes)带来多么困难写法呢。
而且类似item?.***在现在使用的几乎所有情况下那个?都是多余的

@limuyang2
Copy link
Collaborator

list如果由后台返回,后台有不规范性的可能,所以可能出现里面为 null 的情况,如果你需要避免?的使用,提前判空就行了。

override fun convertHeader(helper: BaseViewHolder, item: HomeEntity?) {
   // 判空
   if (item == null) {
       return
    }
     
   // 或者
    checkNotNull(item) {
        return
    }
        
    helper.setText(R.id.header, item.headerTitle)
}

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

提前判空我知道是可以的,如果真是后台返回带null,那说明是他们对应后台的问题,不应该是他们对应的前台自己把null排除掉么?
现在为了不规范的后台需要所有人来配合他,加这种多余的

if (item == null) {
       return
    }

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

或者是否可以增加可选实现

protected fun convert(helper: VH, item: T?)

protected fun convert(helper: VH, item: T)

可空的带?,不可空的不带?

@limuyang2
Copy link
Collaborator

或者是否可以增加可选实现

protected fun convert(helper: VH, item: T?)

protected fun convert(helper: VH, item: T)

可空的带?,不可空的不带?

这种方式不行,这两种方法本质是属于一种,会冲突

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

protected fun convertOrNull(helper: VH, item: T?)

protected fun convert(helper: VH, item: T)

@limuyang2
Copy link
Collaborator

protected fun convertOrNull(helper: VH, item: T?)

protected fun convert(helper: VH, item: T)

嗯,这种方式可以,下个版本我加上

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

妥了妥了

@limuyang2
Copy link
Collaborator

但是会有个问题,从道理上来说,只能有一个方法为 abstract
这种方法,哪一个该用abstract
哪一个该用open

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

对于我们来说,肯定关心的是从旧版本升级上来不用改,另外一种就是能null的毕竟是少数。
所以希望是convert(helper: VH, item: T)abstract

@limuyang2
Copy link
Collaborator

嗯,我需要改造一下逻辑。
判断如果为 null ,就丢到convertOrNull里去

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

这样最好了

@limuyang2
Copy link
Collaborator

这会导致使用 kt 的升级有兼容性问题

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

我之前是用的2.9.45-androidx,直接把?去掉了。要是别人没去掉估计会有改动
image

@limuyang2
Copy link
Collaborator

我觉得,这个暂时先不改动吧,影响不大,自己增加判空处理

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

行吧,改了通知一声,暂时先用2.x

@Reginer
Copy link
Author

Reginer commented Dec 26, 2019

新建了个Adapter继承了库里的adapter重写了里面的convert,在那里return了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants