【发布时间】:2019-02-11 00:55:48
【问题描述】:
我目前正在学习 android,并且第一次向 RecyclerView 添加滑动删除功能。我遇到了以下关于滑动功能的理论,但我无法理解下面讨论的原因,即 getAdapterPosition 将返回 RecyclerView.NO_POSITION 的原因。
- 当适配器内容更改时(并且您调用 notify***)RecyclerView 请求新布局。
- 从那一刻起,直到布局系统决定计算新布局(
- 如果你调用notifyDataSetChanged,它会使一切失效,RecyclerView 不知道 计算下一个布局之前 ViewHolder 的适配器位置。
- 在这种情况下,getAdapterPosition 将返回 RecyclerView.NO_POSITION (-1)
- 如果你调用了 notifyItemInserted(0),ViewHolder 的 getAdapterPosition 是 之前在位置 0 将立即开始返回 1。
- 只要您调度细粒度的通知事件,您就始终处于良好状态(我们知道 适配器位置,即使尚未计算新布局)。
谁能简单解释一下上述原因和解决方法。
【问题讨论】:
标签: android android-recyclerview