Ошибка ворса «Не рассматривайте положение как фиксированное; использовать только немедленно ... »

Я помогаю в библиотеке с открытым исходным кодом и получил ошибку Lint«Не относитесь к позиции как к фиксированной; используйте только немедленно и вызовите holder.getAdapterPosition (), чтобы найти ее позже» для этого кода:

  @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    mAdapter.onBindViewHolder(holder, position);

    if (!isFirstOnly || position > mLastPosition) {
      for (Animator anim : getAnimators(holder.itemView)) {
        anim.setDuration(mDuration).start();
        anim.setInterpolator(mInterpolator);
      }
      mLastPosition = position;
    } else {
      ViewHelper.clear(holder.itemView);
    }
  }

Я проверил, что это потому, что позиция сохранена для будущего использования. Это вопрос к создателю библиотеки, зачем им нужна эта логика. Но проблема исчезла, когда я изменил использование позиции на использованиеholder.getAdapterPosition():

  @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    mAdapter.onBindViewHolder(holder, position);

    if (!isFirstOnly || holder.getAdapterPosition() > mLastPosition) {
      for (Animator anim : getAnimators(holder.itemView)) {
        anim.setDuration(mDuration).start();
        anim.setInterpolator(mInterpolator);
      }
      mLastPosition = holder.getAdapterPosition();
    } else {
      ViewHelper.clear(holder.itemView);
    }
  }

Я предполагаю, что концептуально это не сильно изменилось, но пух теперь удовлетворен. Зачем?

Ответы на вопрос(1)

Ваш ответ на вопрос