【问题标题】:Why does RecyclerView getAdapterPosition() return -1?为什么 RecyclerView getAdapterPosition() 返回 -1?
【发布时间】: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


    【解决方案1】:

    -1 表示无法计算滚动或实际位置无效(介于两者之间)。

    解决方法是忽略它

    if (getAdapterPosition() == -1) return;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 2012-01-25
      • 2012-03-05
      相关资源
      最近更新 更多