只有item可见的时候才会触发,例如一个水平的recycleview,如果不滑动,后面的onbind都不会调用
这样可以减少开销,但是在快速删除item的时候,假如我给item设置了点击事件,那么由于onbind没有调用,position没有更新,
这时候会发生数组越界,难道这就是recycleview没有item点击回调的原因吗?因为回调的postion有可能超过元素个数

解决方案 »

  1.   

    你去操作的时候,表示已经可见了,可见了那么onbinder应该已经可以触发!代码是不是需要再优化优化?
      

  2.   

    不要用position,用ViewHolder.getAdapterPosition()
      

  3.   

    一般点击 Item 进行跳转等不涉及 RecyclerView 数据变化的操作时,Position 和 getAdapterPosition() 是没什么区别的,当涉及RecyclerView 数据变化时,使用getAdapterPosition() 代替 onBindViewHolder() 方法的 position。因为 getAdapterPosition 获得的 position 是最新的 position。而 onBindViewHolder 方法的position 并不是最新的 position。
      

  4.   

    实测不行
    估计holder也是在显示的时候刷新
      

  5.   


    看他的源码确实是这样呢,会根据增删计算新的position,但还是不行
      

  6.   

    调用快速删除后要自己刷新adapter,使用notifyItemMoved