2016-02-28 30 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相關的當前圖像下載。

該解決方案提供了快速滾動(因爲使用了本地佔位符)。但是,如果滾動不是很快,那麼在構建每個視圖的邏輯中可能還有其他問題。