This question already has an answer here:
Lint error “Do not treat position as fixed; only use immediately…”

(1 个回答)


4年前关闭。




这是我的代码 -
public void onBindViewHolder(myViewHolder holder, int position) {

        //1. details obj = list.get(holder.getAdapterPosition());
        //2. details obj = list.get(position);

        holder.position = position;
    }

我收到警告



所以我对 1 和 2 感到困惑,我应该更喜欢哪个,为什么?正如它所说的 getAdapterPosition() 提供更新的位置,我正在根据位置从列表中获取值。

谢谢你。

最佳答案

您收到的警告与使用 positiongetAdapterPosition() 无关。这是关于保存位置:

holder.position = position;

你不需要在你的持有人中保存位置,因为它的位置可以改变,你总是可以通过调用 holder.getAdapterPosition() 来获取它的位置;

从文档:



关于使用:

如果在 onBindViewHolder 方法中调用,两者都应该返回相同的结果。我建议使用 position 因为它最简单和最安全。

关于java - holder.getAdapterPosition() 和 onBindViewHolder() 中构造函数的 position 属性有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38970193/

10-10 04:38