解决IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter

解决IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter

最近项目已个要求,recyclerview显示数据不闪烁,也就是即时更新,一般后台数据没什么变化的话要实现不闪烁显示,所以需要给recyclerViewAdapter
适配器延时后再notify更新据,一般2-3秒,但是这时如果用户在点击请求数据后立马刷新recyclerview就会报上面的错误,应该是列表数据在更改的情况下没有即时通知适配器的原因,其实一般可以通过加个对话框友好提示,但是需求方没有这个需求除了这种外我发现还有一种比较可行的,就是在数据刚拿到时给拦截recyclerview的触摸事件,然后延时更新后在添加触摸事件,
recyclerview?.setOnTouchListener(onTouchEnabled),这里为了方便调用,可以写成一个匿名内部类。

//返回false 不拦截子View触摸,true拦截消费


private var onTouchEnabled = object : View.OnTouchListener{
        override fun onTouch(v: View?, event: MotionEvent?): Boolean {
           return false 
       }
    }
    private var onTouchDisabled = object : View.OnTouchListener{
        override fun onTouch(v: View?, event: MotionEvent?): Boolean {
            return true
        }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值