关于RecyclerView偶尔会报出IllegalStateException的处理办法。

最近我尝试将列表数据源变为本地,在上拉加载时数据直接返回,然后执行notifyItemRangeInserted。

RecycleView必定曝出IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling。

分析后,我认为这是因为数据返回过快,返回时列表还未结束滑动造成的。


解决方法是,在加载时先判断列表状态:

通过isComputingLayout()方法判断是否在计算

通过getScrollState()是否等于RecyclerView.SCROLL_STATE_IDLE(结束滑动状态)判断是否正在滑动


如果正在滑动或计算则:

new Handler().post(runnable);

通过这个办法延迟执行加载,就不会出现报错了。



你可能感兴趣的:(android)