Closed w296365959 closed 3 years ago
内部使用的点击事件使用了 getLayoutPosition,我连续点击同一个item,点击事件是删除当前条目,会删除本条目和他的上一个条目,由于adapter和layout的位置会有时间差(<16ms),进行第二次单击的时候RecyclerView控件的动画刷新还没有完成,第二次点击的其实还是本条目的容器, 使用getAdapterPosition是否更好,判断getAdapterPosition<0时return 防止数组越界
关于第一个问题:notifyChildRemoved删除数据后,可以notifyChildChanged等方法重新bind修正其后position。但这不是必要,要不要修正,取决于你是否在onBindxxxHolder方法使用了final position,需要及时修正。
关于第二个问题:getLayoutPosition返回的是与用户所见的布局一致的位置,如果快速点击,页面没有刷新完成时,用户点击的就是同一个item,所以在点击中使用getLayoutPosition是合理的。至于你的问题,可以通过防止连续点击来避免。
notifyChildRemoved删除数据后 其后对应的position是否会更新,是否需要notifyChildChanged等方法重新bind修正其后position?