2010-08-30 13 views
1

Je 50/100 URL de l'image avec un texte spécifique, je les ajouter dans le vecteur, ajouter ListField avec rappel,Ajouter URL de l'image à l'image bitmap dans ListField

Je télécharge l'image chaque fois avec un appel de fonction UrlToImage I Je suis confronté à un problème, la liste est trop lente, l'icône de téléchargement s'affiche en haut à droite du simulateur.

UrlToImage img = new UrlToImage(imageUrl); 
bit = img.getbitmap(); 
pic = new BitmapField(bit); 
g.drawBitmap(xpos, y+10, bit.getWidth(), bit.getHeight(), bit, DrawStyle.LEFT,0); 

ne peut faire défiler en douceur toute la liste.

Une idée, des commentaires.

Répondre

0

Votre mise en forme est tout foiré, mais si je vous comprends bien, vous téléchargez à chaque rappel? Une façon d'éviter cela est de créer un fil qui démarre lorsque l'écran est nécessaire, et faire les téléchargements de façon asynchrone (une fois chacun!) Et coller les images dans un cache. Ensuite, le rappel drawListRow tire juste à partir du cache.

0

Il semble que votre code s'exécute dans la méthode de peinture. Tout cela se produit sur le thread d'interface utilisateur (ce qui signifie que vous bloquez l'interface utilisateur, effectuez une demande, attendez une réponse, définissez l'image, puis dessinez l'image, chaque fois qu'une peinture se produit). Le fait de voir une demande peut prendre environ 3 secondes, votre interface utilisateur va geler pendant si longtemps. Ce que vous devriez faire en récupérant votre image dans le constructeur de votre classe, définir une variable d'instance de votre classe, puis g.drawBitmap avec cette variable d'instance. En bref, le seul code de votre méthode de peinture doit être g.drawBitmap, afin d'éviter le défilement saccadé.