Gelöschter Account
- Forum-Beiträge: 80
09.07.2011, 17:32:06 via Website
09.07.2011 17:32:06 via Website
Ich weiß, es gibt so ein ähnliches Thema bereits. Ich habe auch schon verschiedene erfolgreiche Ansätze, bin aber trotzdem noch auf der Suche nach der besten Möglichkeit und habe auch konkrete Vorstellungen. Bis jetzt sieht es bei mir wie folgt aus:
Ich starte eine Suche und erhalte Antworten (in 25er Schritten als JSON) von meinem Server-Skript. Die Daten werden in einem AsyncTask geladen. Das Ergebnis zeige ich in einer Liste an. Es enthält jeweils auch URLs zu Thumbs, welche extra geladen werden müssen. Für die Performance ist es nicht gut, die Bilder direkt zu laden und anzuzeigen. Deshalb möchte ich das Laden der Bilder in einen weiteren AsyncTask auslagern. Dazu habe ich einen ThumbLoader geschrieben, welcher genau das tun soll, sobald ihm 25 Thumbs gegeben wurden. Abgesehen davon, dass das Ganze noch nicht so funktioniert wie es soll, bin ich mir nicht sicher, ob das überhaupt die beste Lösung ist.
Wie macht ihr das? Irgendwelche Ideen? Danke, schonmal.
Ich starte eine Suche und erhalte Antworten (in 25er Schritten als JSON) von meinem Server-Skript. Die Daten werden in einem AsyncTask geladen. Das Ergebnis zeige ich in einer Liste an. Es enthält jeweils auch URLs zu Thumbs, welche extra geladen werden müssen. Für die Performance ist es nicht gut, die Bilder direkt zu laden und anzuzeigen. Deshalb möchte ich das Laden der Bilder in einen weiteren AsyncTask auslagern. Dazu habe ich einen ThumbLoader geschrieben, welcher genau das tun soll, sobald ihm 25 Thumbs gegeben wurden. Abgesehen davon, dass das Ganze noch nicht so funktioniert wie es soll, bin ich mir nicht sicher, ob das überhaupt die beste Lösung ist.
Wie macht ihr das? Irgendwelche Ideen? Danke, schonmal.
1package com.popsike.app;
2
3import java.io.InputStream;
4import java.util.ArrayList;
5
6import android.content.Context;
7import android.graphics.drawable.Drawable;
8import android.os.AsyncTask;
9import android.widget.ImageView;
10
11public class ThumbLoader {
12 private Utils utils = new Utils();
13 private ArrayList<ThumbToLoad> thumbsToLoad = new ArrayList<ThumbToLoad>();
14
15 public ThumbLoader(Context context) {
16 //noch nicht fertig
17 }
18
19 public void displayThumb(String url, ImageView imageView) {
20 thumbsToLoad.add(new ThumbToLoad(url, imageView));
21 if (thumbsToLoad.size()>=25) new DownloadImageTask().execute(thumbsToLoad);
22 }
23
24
25 private class ThumbToLoad{
26 private String thumbUrl;
27 private ImageView thumbView;
28 public ThumbToLoad(String u, ImageView i){
29 thumbUrl=u;
30 thumbView=i;
31 }
32 }
33
34 private void setThumb(Drawable thumb, ImageView image){
35 image.setImageDrawable(thumb);
36 }
37
38
39 private class DownloadImageTask extends AsyncTask<ArrayList<ThumbToLoad>, Void, Void> {
40
41 protected Void doInBackground(ArrayList<ThumbToLoad>... thumbList) {
42
43 for (int i=0; i<thumbList.length; i++){
44 try {
45 InputStream is = utils.fetch(thumbList[0].get(i).thumbUrl);
46 setThumb(Drawable.createFromStream(is, "src"), thumbList[0].get(i).thumbView);
47
48 } catch (Exception e){
49 e.printStackTrace();
50 }
51 }
52 return null;
53 }
54 }
55}
2
3import java.io.InputStream;
4import java.util.ArrayList;
5
6import android.content.Context;
7import android.graphics.drawable.Drawable;
8import android.os.AsyncTask;
9import android.widget.ImageView;
10
11public class ThumbLoader {
12 private Utils utils = new Utils();
13 private ArrayList<ThumbToLoad> thumbsToLoad = new ArrayList<ThumbToLoad>();
14
15 public ThumbLoader(Context context) {
16 //noch nicht fertig
17 }
18
19 public void displayThumb(String url, ImageView imageView) {
20 thumbsToLoad.add(new ThumbToLoad(url, imageView));
21 if (thumbsToLoad.size()>=25) new DownloadImageTask().execute(thumbsToLoad);
22 }
23
24
25 private class ThumbToLoad{
26 private String thumbUrl;
27 private ImageView thumbView;
28 public ThumbToLoad(String u, ImageView i){
29 thumbUrl=u;
30 thumbView=i;
31 }
32 }
33
34 private void setThumb(Drawable thumb, ImageView image){
35 image.setImageDrawable(thumb);
36 }
37
38
39 private class DownloadImageTask extends AsyncTask<ArrayList<ThumbToLoad>, Void, Void> {
40
41 protected Void doInBackground(ArrayList<ThumbToLoad>... thumbList) {
42
43 for (int i=0; i<thumbList.length; i++){
44 try {
45 InputStream is = utils.fetch(thumbList[0].get(i).thumbUrl);
46 setThumb(Drawable.createFromStream(is, "src"), thumbList[0].get(i).thumbView);
47
48 } catch (Exception e){
49 e.printStackTrace();
50 }
51 }
52 return null;
53 }
54 }
55}
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.