2013-03-19 96 views
2

我想構建自定義ImageSpan,它在獲取數據的開始處設置默認圖片,並在提取完成時加載圖片。代碼在ImageSpan中延遲加載圖像

例子:

public class CustomImageSpan extends ImageSpan { 

    private Drawable mDrawable; 

    @Override 
    public Drawable getDrawable() { 
    if (mDrawable == null) { 

     mDrawable = defaultDrawable; 
     Futures.addCallback(
      FetchImage.submit(
       new FutureCallback<Image>() { 
      @Override 
      public void onSuccess(Image result) { 
       Bitmap bitmap = result.getBitmap(); 
       mDrawable = new BitmapDrawable(mContext.getResources(), bitmap); 

      //!Rerender span with new bitmap. 
      } 
      }, mExecutor); 

    } 

    return mDrawable; 
    } 

如何通知跨度載荷已完成,它`的時間,以獲得新的位圖,而不是默認?

+1

可以得到重複圖像來自緩存,但不可能顯示第一張圖片。我建議重寫創建ImageSpan的代碼,以便在圖像加載後創建它們。 – vorrtex 2013-03-19 21:59:51

回答

-1

你可以嘗試使用一個處理程序進行到下一個任務,一旦當前已完成

Handler xHandler=new Handler(){ 
     @Override 
     public void handleMessage(Message message){ 
      switch (message.what){ 
      case SOME_OPERATION: 
       getImage(); //the method you are using 
       break; 
      } 
     } 
    }; 

運行在一個seprate線程handleer如下

@Override 
     public void run() { 
      xHandler.sendMessage(Message.obtain(xHandler, SOME_OPERATION)); 
     } 
+0

你爲什麼不投票解釋?請在這裏詳細說明你的理由 – 2015-12-17 18:30:15