2016-02-28 77 views
0

我使用picasso和viewholder模式在我的gridview中加载图像,但是当我滚动时,gridview的加载不够流畅。我如何实现这一点,当我滚动gridview只加载占位符第一,并且当每个图像加载到给定的“页面”gridview显示图像一个接一个,以一个小的延迟。那么毕加索有更好的工具吗?我寻找解决方案,但我找不到任何解决方案。如何在gridview上加载图像,并在滚动上有一个小延迟?

回答

0

不确定,如果可以等待每个图像加载到给定页面上。然而,在我的一个“宠物”项目中,我实现了以下逻辑 - 显示占位符,以及何时加载图像,它显示实际图像(但不是当页面上的所有图像,它分别与每个图像一起工作)。要加载与毕加索我用下一个代码的图片:

private def prepareImageView(image: ImageView, 
          course: Course) = { 
    Picasso.`with`(context).cancelTag(image) 
    image.setImageResource(R.drawable.img_session_placeholder) 
    Picasso.`with`(context) 
     .load(course.imgUri) 
     .tag(image) 
     .into(new Target { 

      override def onBitmapFailed(errorDrawable: Drawable): Unit = {} 

      override def onPrepareLoad(placeHolderDrawable: Drawable): Unit = {} 

      override def onBitmapLoaded(bitmap: Bitmap, from: LoadedFrom): Unit = { 
       image.setImageBitmap(bitmap) 
       image.invalidate 
      } 
    } 
} 

代码是Scala,但我不认为会有任何问题,将其转换为Java。首先,我将占位符图像设置为imageView,以便用户看到占位符(R.drawable.img_session_placeholder),稍后Picasso会在下载后立即使用实际图像更新它。另外不要忘记取消任何与当前ImageView相关的当前图像下载。

该解决方案提供了快速滚动(因为使用了本地占位符)。但是,如果滚动不是很快,那么在构建每个视图的逻辑中可能还有其他问题。

相关问题