2017-05-31 102 views
0

我正在使用GridView顯示20個圖像。我使用Glide在我創建的適配器中獲取並顯示來自Web的圖像。問題是,如果所有圖像都下載了,當我滾動網格視圖時,我看到圖像出現像動畫一樣的淡入淡出。我不'想要這個。如果我滾動得更快,我希望在gridview中加載所有圖像而不會看到它們。Android GridView使用適配器加載圖像和Glide

我試過使用diskcache()和dontAnimate(),但它沒有解決我的問題。我認爲問題在於我顯示了gridview的4個單元格。當我滾動適配器調用getView來顯示其他兩個單元格,並刪除我滾動的2。問題在於getview每次都需要時間來顯示其他兩個單元格,並且我看起來像加載的效果。我希望我的場景看起來像一個網格視圖,其中存在並分配了所有20個單元格。

這是我的適配器:

public class ImagesAdapter extends BaseAdapter { 
private Context mContext; 
private ArrayList<Picture> images; 

public ImagesAdapter(Context context, int resource, ArrayList<Picture> inputImages) { 
    super(); 
    this.mContext = context; 
    this.images = inputImages; 
} 

@Override 
public int getCount() { 
    return images.size(); 
} 

@Override 
public Picture getItem(int position) { 
    return images.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 

    View row = convertView; 
    ViewHolder holder = null; 

    if (row == null) { 
     row = LayoutInflater.from(mContext).inflate(R.layout.grid_item_layout, null); 
     holder = new ViewHolder(); 
     holder.imageView = (ImageView) row.findViewById(R.id.grid_item_image); 
     holder.id = images.get(position).getImageId(); 
     row.setTag(holder); 
    } 
    else { 
     holder = (ViewHolder) row.getTag(); 
     holder.id = images.get(position).getImageId(); 
    } 

    Picture pic = images.get(position); 
    Glide 
      .with(mContext) 
      .load(pic.getBigImageUrl()) 
      .into(holder.imageView); 

    return row; 
} 
public class ViewHolder { 
    ImageView imageView; 
    public String id; 
} 
} 

有人可以幫助我找到解決辦法嗎?感謝所有

+0

滑翔將試圖下載你的圖像,當他們即將出現在屏幕上。所以會有延遲,直到他們出現在你的牢房裏。如果你不想延遲,你必須事先下載這些圖像。如果Glide提供緩存選項,您的圖像將第二次立即顯示,但您將永遠不得不等待它們第一次下載。 –

+0

是的,Glide正在第一次下載它們。但我的問題不是第一次。第二次,我確認圖像全部下載,即使全部下載,在滾動上它們都不會立即顯示。 – denno

回答

0

試試這個

Glide 
.with(mContext) 
.load(pic.getBigImageUrl()) 
.placeholder(R.drawable.defaultImage) 
.into(holder.imageView); 

到knoow更多關於雲燕滑翔單擊herehere

0

您應該添加磁盤高速緩存策略從緩存中加載圖像。 你可以使用SOURCE或RESULT; SOURCE保存原始數據以緩存並RESULT保存所有轉換到緩存後的媒體項目。 例如:。

Glide 
.with(mContext) 
.load(pic.getBigImageUrl()) 
.diskCacheStrategy(DiskCacheStrategy.SOURCE) 
.into(holder.imageView); 
+0

我無法在適配器中使用.diskCacheStrategy :( – denno

0

嘗試此 Glide.with(mContext).load(pic.getBigImageUrl())diskCacheStrategy(DiskCacheStrategy.SOURCE).dontAnimate()代入(holder.imageView);

+0

我無法在適配器中看到.diskCacheStrategy和.dontAnimate(): – denno

+0

您是否有此版本的gradle中的滑動? – Vij

+0

compile'c​​om.github.bumptech.glide:glide :3.7.0' – Vij

相關問題