簡體   English   中英

Android在ListView中加載圖像

[英]Android loading images in ListView

我正在將圖像從Parse.com加載到列表視圖中,一切正常,但是問題是當我滾動通過列表視圖時,圖像一直都在重新加載。 我正在將圖像緩存在內存中,但是每次加載圖像之前每次閃爍都是令人討厭的。

我正在使用異步任務加載圖像,這是代碼:

private class loadContent extends AsyncTask<Void, Void, Void>{

    @Override
    protected Void doInBackground(Void... params) {
        try {
            query = new ParseQuery<ParseObject>("Images");
            query.orderByDescending("createdAt");
            query.setLimit(limit);
            ob = query.find();
            for(ParseObject num : ob){
                ParseFile img = (ParseFile)num.get("img");
                PostRow test1 = new PostRow(img.getUrl().toString(), (String) num.get("username"));
                postList.add(test1);
            }
            //loadDataFromAdapter();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        adapter.notifyDataSetChanged();
    }
}

我該怎么做才能一次將10張圖像保持在列表視圖中?

您應該研究使用Picasso庫。 從他們的網站:

  • 它處理ImageView回收和適配器中的下載取消。
  • 復雜的圖像轉換,使用最少的內存。
  • 自動內存和磁盤緩存。

它被廣泛用於圖像下載,並且非常易於使用。

希望有幫助!

如操作建議所示,使用畢加索將是更明智的方法。

但是,仍然需要使用drawable作為占位符,以防止這種“煩人的閃爍”。

ParseFile img = (ParseFile)num.get("img");
String urlImage = img.getUrl().toString();
Picasso.with(context).load(urlImage).fit().centerCrop().placeholder(R.drawable.white_placeholder).into(imageview);

對於使用Universal Image Loader的任何人來說,問題出在我的配置中,我的RAM不足以進行緩存。 現在,我改變了一切,一切正常。

.memoryCache(new LruMemoryCache(50 * 1024 * 1024))
            .memoryCacheSize(50 * 1024 * 1024)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM