Erro de cotão “Não trate a posição como fixa; use apenas imediatamente ... ”
Estou contribuindo para a biblioteca de código aberto e recebi um erro de cotão"Não trate a posição como fixa; use imediatamente imediatamente e ligue para holder.getAdapterPosition () para procurar mais tarde" para este código:
@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);
}
}
Eu verifiquei que é porque a posição está salva para uso futuro. É uma pergunta ao criador da biblioteca por que eles precisam dessa lógica. Mas o problema desapareceu quando alterei o uso da posição para o usoholder.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);
}
}
Suponho que conceitualmente não mudou muito, mas o fiapo está satisfeito agora. Por quê?