Cannot call this method while RecyclerView is computing a layout or scrolling

最近项目中用到了一个条目展开关闭的效果,出于效率的问题采用了三方工具BaseMultiItemQuickAdapter(请自行百度),功能很快完成了但是问题也出现了,因为产品的需求需要进入页面条目就展开,最初的时候是崩溃,我以为测试环境数据问题,于是乎常用的方法try...catch...捕获下异常,但是问题来了,数据加载不全,没办法把异常打印出来看看吧,发现并不是数据问题,原因是因为expand()这个方法调用刷新数据的操作,而我恰恰是在填充数据的同时调用的,所有报异常了,既然找到问题了就一定有解决的办法

    if (!mapStatus.containsKey( parentItem.getId() )
                                    && mapStatus.get( parentItem.getId() ) == null  ){//记录状态,确保不会重复展开动作,导致页面不停闪动
                            helper.itemView.postDelayed( new Runnable() {//此处必须做延迟操作不然会异常
                                @Override
                                public void run() {
                                    if (helper.getAdapterPosition() != -1 && !parentItem.isExpan()){
                                        mapStatus.put( parentItem.getId(),true );
                                        expand( helper.getAdapterPosition() );
                                    }

                                }
                            },100 );
                            }

做了一个延迟操作游戏的解决了这个异常的问题,但是每次滑动都会走这个方法,导致页面不停的闪动,所有用了一个map集合保存了状态,完美的解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值