2015-09-10 192 views
20

我使用滑翔加載圖像和我添加了一個監聽器知道什麼時候資源是準備好或者是否有任何類型的錯誤:滑翔監聽器不工作

Glide.with(mContext) 
    .load(url) 
    .placeholder(R.drawable.glide_placeholder) 
    // use dontAnimate and not crossFade to avoid a bug with custom views 
    .dontAnimate() 
    .diskCacheStrategy(DiskCacheStrategy.ALL) 
    .listener(new RequestListener<String, GlideDrawable>() { 
     @Override 
     public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
      // do something 
      return true; 
     } 

     @Override 
     public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
      // do something 
      return true; 
     } 
    }) 
    .into(mCustomImageView); 

應用始終運行中onResourceReadyonException但如果我刪除偵聽器,並讓異步下載沒有回調,它正確地運行:

Glide.with(mContext) 
    .load(url) 
    .placeholder(R.drawable.glide_placeholder) 
    // use dontAnimate and not crossFade to avoid a bug with custom views 
    .dontAnimate() 
    .diskCacheStrategy(DiskCacheStrategy.ALL) 
    .into(mCustomImageView); 

我也試圖與GlideDrawableImageViewTarget代替監聽器接收回調,但應用程序運行內部onLoadStarted但從來沒有運行insid e onLoadClearedonLoadFailedonResourceReady

+0

你說聽者的onException的和onResourceReady方法不叫?從這些方法返回true將阻止目標被調用,但無論如何都應該始終爲它們調用它們。 –

+0

我想你需要調用'submit'才能啓動它以開始加載 –

回答

1

跑到同樣的問題。有onResourceReady返回false爲我做了詭計。

+0

已經有了代碼? – styler1972

+0

@ styler1972如果你想看,我已經添加了我的代碼。似乎在我的情況下工作得很好。 –

1

下面是做這件事:

 Glide.with(context).load(...) 
       .listener(object : RequestListener<Drawable> { 
        override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean { 
         //TODO handle error images while loading photo 
         return true 
        } 

        override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { 
         //TODO use "resource" as the photo for your ImageView 
         return true 
        } 

       }).submit() 
+0

這很奇怪,添加.submit()似乎已經解決了我的問題。任何想法導致.load(...)不再直接工作的變化是什麼?文檔對我來說是空白的。 –

+0

我認爲你需要在某個時候啓動它,因爲沒有目標(或者只是告訴它這麼做),它不知道何時執行操作。 –