Android 毕加索加载图像,即使在recyclerView中的特定位置没有图像url?

Android 毕加索加载图像,即使在recyclerView中的特定位置没有图像url?,android,android-recyclerview,picasso,Android,Android Recyclerview,Picasso,我的回收视图中有奇怪的行为,我无法理解。我在OnBindViewHolder()中使用以下代码 我的适配器中有五个项目,位置2没有url,但它有时会加载图像,但并不总是这样 还有一件事我注意到有一个按钮“添加到购物车”,当点击这个按钮时,它会在这个位置刷新项目。所以,如果我在任何位置点击这个按钮,比如说在位置5,然后再次点击位置2(我没有url),位置5的图像将加载到位置2。这一行为一点也不奇怪。这就是RecyclerView的工作原理,它基本上是将相同的ViewHolder重新用于下一个项目。

我的回收视图中有奇怪的行为,我无法理解。我在OnBindViewHolder()中使用以下代码

我的适配器中有五个项目,位置2没有url,但它有时会加载图像,但并不总是这样


还有一件事我注意到有一个按钮“添加到购物车”,当点击这个按钮时,它会在这个位置刷新项目。所以,如果我在任何位置点击这个按钮,比如说在位置5,然后再次点击位置2(我没有url),位置5的图像将加载到位置2。

这一行为一点也不奇怪。这就是
RecyclerView
的工作原理,它基本上是将相同的
ViewHolder
重新用于下一个项目。 您的代码问题包括
if(currentItem.getPhotoUris()!=null)
如果您错过了
else
部分,即清除图像或设置占位符

if (!TextUtils.isEmpty(currentItem.getPhotoUris())) {
    Picasso.get().load(currentItem.getPhotoUris().get(0))
        .into(viewHolder.productNamesFragmentItemsBinding.ivProductImage);
}else{
    // you can set a placeholder image here
    viewHolder.productNamesFragmentItemsBinding.ivProductImage.setImageResource(0)
}

这一点也不奇怪。这就是
RecyclerView
的工作原理,它基本上是将相同的
ViewHolder
重新用于下一个项目。 您的代码问题包括
if(currentItem.getPhotoUris()!=null)
如果您错过了
else
部分,即清除图像或设置占位符

if (!TextUtils.isEmpty(currentItem.getPhotoUris())) {
    Picasso.get().load(currentItem.getPhotoUris().get(0))
        .into(viewHolder.productNamesFragmentItemsBinding.ivProductImage);
}else{
    // you can set a placeholder image here
    viewHolder.productNamesFragmentItemsBinding.ivProductImage.setImageResource(0)
}