解决RecyclerView 出现ClassCastException
首先需要排除的时候 确实不是代码的逻辑上的问题。
出现场景在于多种视图的判断既混合的布局加载。(ViewType >=2)
会出现关于复用布局的类型转换异常
当然这种场景还有前提是快速滑动且数据量达到一定的层次的时候。当然发现在快速滑动过程中,Item的状态又发生了更新,然后你快速滑动的时候,直接Crash了
当时的我是一脸懵逼的。
后来baidu 和google之后,涉及到一些关于,小的细节性的优化的问题,
把所有的条件判断小于3的都用三目运算 这个主要是针对那个RecyclerView中的
getItemViewType(int position)的判断方法。
onCreateViewHolder 和onBindViewHolder的条件判断 如果条件不多的情况下 用if-else(3个左右)判断最好。但是多余一定时候 还是switch 更利于性能优化。但其实switch 相对而言最大的弊端应该是判断的类型有限吧。不如if-else灵活
if else是一条比较指令,需要遍历条件分支直到命中条件
而swtich是一张地址表,而只需访问对应索引号的表项就能定位分支,所以switch有点以空间换时间的意思。