2016-07-02 76 views
0

我需要使用Parse服務在後臺更新列表。使用下面的代碼,我可以檢索圖像並顯示,但交互非常緩慢。是否有更好的方式來動態更新ListView而不影響用戶交互速度?Android爲圖像動態更新ListView

ParseQuery<ParseObject> userFeedQuery = ParseQuery.getQuery("Offers");   
    userFeedQuery.findInBackground(new FindCallback<ParseObject>() { 
     @Override 
     public void done(List<ParseObject> objects, ParseException e) { 
      if (e == null){ 
       if (objects.size() > 0){ 
        for (ParseObject object:objects){ 
         final String offerName = object.getString("offerName"); 
         final String offerDetail = object.getString("offerDetails"); 
         final Bitmap[] offerImage = new Bitmap[1]; 
         ParseFile file = (ParseFile) object.getParseFile("offerImage"); 
         file.getDataInBackground(new GetDataCallback() { 
          @Override 
          public void done(byte[] data, ParseException e) { 
           if (e == null){ 
            offerImage[0] = BitmapFactory.decodeByteArray(data,0,data.length); 

            offerModelList.add(new OfferModel(offerName,offerDetail, offerImage[0])); 
            adapter.notifyDataSetChanged(); 
           } 
          } 
         }); 
        } 
       } 
       adapter = new OffersAdapter(getApplicationContext(),R.layout.offers_table,offerModelList); 
       offersListView.setAdapter(adapter); 
      } 
     } 
    }); 
+0

使用第三方顯示像滑翔,畢加索等ur圖像 – Nisarg

回答

0

是的,你可以用Picaso或Glide替換ParseImageView,但我prefere Picaso。

更換

ParseFile file = (ParseFile) object.getParseFile("offerImage"); 

有了這個

String OfferImageUrl = object.getParseFile("offerImage"); 
     if (!TextUtils.isEmpty(OfferImageUrl)) { 
      Picasso.with(this) // use getContext or contex for fragments or adapter 
        .load(OfferImageUrl) 
        .error(android.R.drawable.error) // your own error image 
        .into(mOfferImage); // mOfferImage = (ImageView) findViewById(R.id.offer_image); 
     } 

希望這有助於。讓我知道對這個問題的任何幫助。

+0

謝謝,但不幸的是它不工作。我將檢索到的圖像存儲到數組中並加載到ListView中。當我使用CallBack功能圖像未被加載。 –