【问题标题】:RecyclerView: cannot maintain consistent item view on scrollingRecyclerView:无法在滚动时保持一致的项目视图
【发布时间】: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


【解决方案1】:

而不是这个 storagereference.get(position) use storagereference.get(getAdapterPosition()) 并检查是否有任何值或者在加载之前没有

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多