【发布时间】:2017-10-22 03:35:46
【问题描述】:
我在网格视图中显示回收站视图。回收器视图适配器将 cardview 作为模型视图,其中我有一个 imageview。在适配器的onBindViewHolder 内部,我使用 Firebase 存储参考从 glide 加载图像。
@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 的网格视图中显示它们)并且当我滚动最后两个项目时加载参考存储在 @987654323 中的图像@ 和 storagereference.get(1) 分别。当我向上滚动第一个中的图像时,两项更改为其他内容,它们要么变得相同,要么来自storagereference.get(11) 或storagereference.get(10)。
我不知道它为什么会发生(但我猜是因为回收项目)虽然我的 onBindViewHolder() 方法中有 .load(storagereference(position)) 所以它必须返回所需位置的存储引用( 0 表示第一项,依此类推)但不知何故它会改变。
请任何人解释原因和解决方法。 谢谢
【问题讨论】:
-
而不是这个 storagereference.get(position) 使用 storagereference.get(getAdapterPosition()) 并在加载之前检查是否有任何值
-
一点sn-p会有很大帮助!谢谢! @ankit 阿曼
-
酷,将此答案标记为接受投票
标签: android android-recyclerview firebase-storage