liangjingkanji / BRV

[使用文档] Android 快速构建 RecyclerView, 比 BRVAH 更简单强大
http://liangjingkanji.github.io/BRV/
MIT License
2.51k stars 317 forks source link

分组的子列表无法使用选择模式 #332

Closed Clearpole closed 1 year ago

Clearpole commented 1 year ago

会报错父Model不能作为子Model使用

liangjingkanji commented 1 year ago

请附上错误信息, 以及fork仓库复现bug

你应该是获取model是没有判断类型

Clearpole commented 1 year ago

代码在https://github.com/clearpole/test1

Clearpole commented 1 year ago

image image

liangjingkanji commented 1 year ago

让你fork仓库改现有demo, 你新建项目干什么, 你的版本太高我无法运行起来项目

Clearpole commented 1 year ago

好吧,我找到了另外一种实现方式,多谢回答

liangjingkanji commented 1 year ago

运行了你的demo也根本没有发生异常崩溃

Clearpole commented 1 year ago

我这里运行全选会崩溃,不知道为什么

liangjingkanji commented 1 year ago

类型转换崩溃异常我认为很好找原因吧, 你自己尝试下debug, 你的人生有的是这种机会

本框架是开源框架, 每个使用者就有义务排错/维护

Clearpole commented 1 year ago

收到,谨记

liangjingkanji commented 1 year ago

光看你代码我怎么都猜不到会类型转换异常, 我认为你不是运行的你的demo

Clearpole commented 1 year ago

确实是运行了test1的demo,另外我在除了这个demo的另一个项目也运行了类似的代码,同样是报错转换异常

liangjingkanji commented 1 year ago

找到问题了没

Clearpole commented 1 year ago

找到了,因为分组列表全选会包括父级 Model 一起选择,而父级Model 和子级 Model 不属于同类型,所以会闪退报错,我的解决方法是在 onChecked 加个 try catch

liangjingkanji commented 1 year ago

我不明白全选为什么会要求父级和子级同类型? 可能是我对这个框架的理解不够, 你能详细说下嘛? 最好附上代码片段

Clearpole commented 1 year ago

是我表达失误 分组列表全选的时候,我想要的效果是只选择子级 Model,但它会连带着父级 Model 一起选择,所以闪退,我解决它的方法是在 onChecked 整体套上 try

rv.setup{
  addtype〈TreeModel〉{layout}
  addtype〈Model〉{layout}
  onChecked{
    try{

    ...

    }catch(..){
    // 选择父级 item 的时候 会到这里
    }
  }
}.models=models()
liangjingkanji commented 1 year ago

这不算是bug, 你应该判断类型而不是trycatch. 或者使用setCheckableType指定可选择类型

Clearpole commented 1 year ago

好的,我回去试试

liangjingkanji commented 1 year ago

请记住任何多类型列表都存着需要分类型情况处理