Bonjour,
J'ouvre un second sujet pour un deuxième problème qui commence à me rendre un peu fou ^^;
Le contexte est :
- J'ai une Activity qui contient un ListView
- Ce ListView est initialisé à l'aide d'un ArrayAdapter personnalisé
- Chaque élément de la liste comportant une photo téléchargée sur internet, il est un peu long à afficher (100-150 éléments en moyenne) donc je souhaite les afficher avec une photo par défaut et ensuite, au sein d'une tâche asynchrone, télécharger les photos petit à petit et les mettre à jour dans la liste
Element de la liste
Ma tâche Asynchrone
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/white" android:orientation="horizontal" > <ImageView android:id="@+id/iBrPhoto" android:layout_width="65dp" android:layout_height="40dp" android:scaleType="fitXY" android:layout_marginRight="15dp"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tvTitle" android:layout_width="wrap_content" android:layout_height="22dp" android:gravity="center_vertical" android:textAppearance="@style/lv_chann_br_item_title" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="18dp" android:orientation="horizontal" > <TextView android:id="@+id/tvHour" android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center_vertical" android:textAppearance="@style/lv_chann_br_item" /> <TextView android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center_vertical" android:textAppearance="@style/lv_chann_br_item" android:text=" - " /> <TextView android:id="@+id/tvType" android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center_vertical" android:textAppearance="@style/lv_chann_br_item" /> <TextView android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center_vertical" android:textAppearance="@style/lv_chann_br_item" android:text=" - " /> <TextView android:id="@+id/tvChannel" android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center_vertical" android:textAppearance="@style/lv_chann_br_item" /> </LinearLayout> </LinearLayout> </LinearLayout>
Le problème est que le téléchargement s'effectue bien... La mise à jour se fait sans soucis (j'ai testé sur les 10 premiers éléments)...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 private class DownloadPhotoTask extends AsyncTask<Integer, Void, Bitmap> { LinearLayout brView; ImageView iv; @Override protected Bitmap doInBackground(Integer... params) { Bitmap ret = null; for (Integer index : params) { View v = broadcastsListView.getChildAt(Integer.parseInt(index.toString())); if (v == null) { brView = new LinearLayout(getApplicationContext()); String inflater = Context.LAYOUT_INFLATER_SERVICE; LayoutInflater vi = (LayoutInflater)getApplicationContext().getSystemService(inflater); vi.inflate(R.layout.videos_broadcast_item, brView, true); } else { brView = (LinearLayout)v; } ret = ImageUtils.LoadBitmap(ImageUtils.GetImageUrl(broadcasts.get(index).getPhotoId()), getApplicationContext()); } return ret; } @Override protected void onPostExecute(Bitmap bmp) { iv = (ImageView)brView.findViewById(R.id.iBrPhoto); Drawable[] layers = new Drawable[2]; layers[0] = new BitmapDrawable(bmp); layers[1] = getApplicationContext().getResources().getDrawable(R.drawable.play_big); layers[1].setBounds(10, 10, 10, 10); LayerDrawable layerDraw = new LayerDrawable(layers); iv.setImageDrawable(layerDraw); } }
MAIS !
Quand je scrolle vers le bas, et que je remonte, les images ont disparues... et voila le noeud du problème >_<
j'ai essayé de rajouter aaBr.notifyDataSetChanged(); à la fin de mon onPostExecute, mais ça se contente de ne rien m'afficher du tout...
Je remercie par avance toute personne capable et voulant bien m'aider ^^
Partager