2016-07-02 19 views
0

Ich muss die Liste mit Bildern aktualisieren, die im Hintergrund mithilfe des Parse-Dienstes abgerufen werden. Unter Verwendung von Code könnte ich Bilder abrufen und anzeigen, aber die Interaktion ist ziemlich langsam. Gibt es eine bessere Möglichkeit, den ListView dynamisch zu aktualisieren, ohne die Geschwindigkeit der Benutzerinteraktion zu beeinträchtigen?Android aktualisiert ListView dynamisch für Bilder

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

Verwenden Sie Dritte, um Ihre Bilder wie Gleiten, Picasso usw. zu zeigen. – Nisarg

Antwort

0

Ja, Sie können ParseImageView mit Picaso oder Glide ersetzen, aber ich bevorzuge Picaso.

ersetzen

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

Mit diesem

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); 
     } 

Hope this Hilfe. Lassen Sie mich für jede Hilfe zu dieser Frage wissen.

+0

Danke, aber leider funktioniert es nicht. Ich speichere die abgerufenen Bilder in einem Array und lade sie in ListView. Wenn ich CallBack-Funktion verwende, wird das Bild nicht geladen. –

Verwandte Themen