2016-01-03 68 views
0

我有使用畢加索怪異的行爲。 我有三個屏幕。屏幕A具有回收器視圖,當用戶單擊一個項目時,屏幕B將打開並提供有關所單擊項目的更多詳細信息。 在屏幕B上有三個圖像的縮略圖 並且當任何這些縮略圖的(即我裝載有畢加索)用戶點擊我開始後臺線程寫入這些位圖的文件,並通過對屏幕C的屏幕中的文件路徑 C有一個查看傳呼機來顯示圖像。所以,我現在有使用畢加索,文件路徑再次加載 圖像。畢加索負荷錯圖像

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    View view = LayoutInflater.from(this.context).inflate(R.layout.item_fullscreen_image, 
      container, false); 
    ImageView img = (ImageView) view.findViewById(R.id.img); 
    //img.setImageURI(Uri.parse(filePaths.get(position))); 
    Picasso.with(context).load(new File(filePaths.get(position))).into(img); 
    ((ViewGroup) container).addView(photoView); 
    return view; 
} 

的問題是,當用戶選擇一個畫面一個項目,去屏幕B和輕按 imageview的打開與查看尋呼機屏幕C,如果是第一次,做工精細。

如果不是第一次,從帶畢加索文件加載的圖像不會改變, 它總是加載相同的三個圖像來填充視圖尋呼機。

我已經嘗試過使用目標加載,但問題仍然存在:

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    View view = LayoutInflater.from(this.context).inflate(R.layout.item_fullscreen_image, 
      container, false); 
    ImageView img = (ImageView) view.findViewById(R.id.img); 
    Target target = new TargetBitmaps(img); 
    img.setTag(target); 
    Picasso.with(context).load(new File(filePaths.get(position))).into(target); 
    ((ViewGroup) container).addView(photoView); 
    return view; 
} 

private class TargetBitmaps implements Target { 
    private ImageView img; 

    public TargetBitmaps(ImageView img) { 
     this.img = img; 
    } 

    @Override 
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
     img.setImageBitmap(bitmap); 
    } 

    @Override 
    public void onBitmapFailed(Drawable errorDrawable) { 

    } 

    @Override 
    public void onPrepareLoad(Drawable placeHolderDrawable) { 

    } 
} 

我知道這是不是我的功能,以節省位圖到文件,因爲如果 我不畢加索使用和問題以這種方式做,做工精細:

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    View view = LayoutInflater.from(this.context).inflate(R.layout.item_fullscreen_image, 
      container, false); 
    ImageView img = (ImageView) view.findViewById(R.id.img); 
    img.setImageURI(Uri.parse(filePaths.get(position))); 
    ((ViewGroup) container).addView(photoView); 
    return view; 
} 

所以,如果有人能幫助我,告訴我在做什麼錯了,我很欣賞。

回答

0

我找到了解決辦法:

我這樣做是持有該viewPager片段:

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    for (String path : filePaths) { 
     Picasso.with(getContext()).invalidate(new File(path)); 
    } 
} 

有了這個畢加索刪除緩存中的三個文件,並顯示在下次正確。