日常,我们经常用RecyclerView进行多种开发场景,比如列表式,代替了ListView,再比如,表格式,代替了GridView,还有我们经常说的瀑布流等等,但是,在Android8.0定制化终端上,我遇到过因为RecyclerView崩溃的bug,特此记录一下。
首先,我们可能会想到,RecyclerView已经用了好多次了,为什么还会报错呢?其实不然,有些终端虽然在已经支持了,但还是会遇到奇奇怪怪的错误。
就比如,我在滑动的时候遇到了IndexOutOfBoundsException,可是数据并没有下表越界啊,这是什么鬼?十次有一次崩溃,那可能是这两个地方出错了。
首先,我们重写LinearLayoutManager
这样,我们便可以拦截因为数组下表越界而出现的错误了,但是,你会发现,虽然不崩溃了,但是没有了数据!没了数据,那我们的RecyclerView将失去灵魂,所以,这里我加入EventBus的通知,当每次进入这里进行异常抛出的时候,就重新初始化RecyclerView的相关操作,问题便得到解决。
不过,有些问题,并非是这个地方抛出了异常,可能还跟另一个地方有关
在原生代码中,可能这里也会有异常出现,大致可以理解为,因为滑动导致数组下表越界,当然,这里的下表越界,是我在跟代码的时候,发现还是因为RecyclerView出现的错误,至于具体发生了什么,有兴趣的朋友可以跟一下源码,欢迎一起探讨!进入正题,这里出现错误,怎么解决呢?
这是我这里的处理理解思路,并且还是用EventBus发送通知,进行重新初始化RecyclerView 。
这样问题得以解决!可能还有更好的思路,或者代码上有所误解,欢迎各位大神批评指出!