我在网格视图中显示回收者视图。 Recycler视图适配器将cardview作为模型视图,其中我有一个imageview。在我的适配器的onBindViewHolder
内,我使用Firebase存储参考从滑翔加载图像。
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
Glide.with(context).using(new FirebaseImageLoader()).load(storagereference.get(position)).centercrop().into(viewholder.imageview);
}
其中storagereference是Firebase的StorageReference类的ArrayList。问题是当回收者视图中的视图数量超过11时,即12张卡片(我在跨度为2的网格视图中显示它们),当我滚动最后两个项目时,加载其参考文件存储在{{分别为1}}和storagereference.get(0)
。当我向后滚动第一个中的图像时,两个项目会变为其他内容,它们会变为相同或来自storagereference.get(1)
或storagereference.get(11)
。
我不知道它为什么会发生(但我猜它是因为物品的回收)虽然我在我的onBindViewHolder()方法中有.load(storagereference(position))所以它必须返回所需位置的存储引用( 0表示第一个项目,依此类推)但不知何故,它会发生变化。
请任何人解释原因和补救措施。 感谢
答案 0 :(得分:0)
代替 storagereference.get(position) 使用 storagereference.get(getAdapterPosition()),并检查是否有任何值或不在加载之前