2014-04-16 4 views
0

j'ai obtenu un code de téléchargement d'images à partir, http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html ce qui m'a laissé perplexe comment il a obtenu l'avis du imageview retour du téléchargement() sans valeur de retour de ImageDownloader?sur mesure Listview avec imageview

public class ImageAdapter extends BaseAdapter { 
... 
public View getView(int position, View view, ViewGroup parent) { 
     if (view == null) { 
      view = new ImageView(parent.getContext()); 
      view.setPadding(6, 6, 6, 6); 
     } 

     imageDownloader.download(URLS[position], (ImageView) view); 

     return view; 
    } 
.. 


public class ImageDownloader { 
    ... 
    private void forceDownload(String url, ImageView imageView) { 
    .... 
    case CORRECT: 
        task = new BitmapDownloaderTask(imageView); 
        DownloadedDrawable downloadedDrawable = new DownloadedDrawable(task); 
        imageView.setImageDrawable(downloadedDrawable); 
        imageView.setMinimumHeight(156); 
        task.execute(url); 

Répondre

1

Si vous regardez à l'intérieur BitmapDownloadTask classe, il est imageView.setImageBitmap(bitmap); sur la méthode OnPostExecute qui définit bitmap une fois qu'il est téléchargé.

Notez que la méthode OnPostExecute est appelée une fois l'image téléchargée.

EDIT: Lorsque vous appelez le téléchargement, vous passez la référence de l'objet ImageView en tant que paramètre. Ainsi, lorsque cette méthode effectue des modifications telles que la définition d'une image, elle fait de même avec l'objet transmis.

Les objets sont transmis comme référence dans Java. Donc les deux ImageView font référence au même objet.

J'espère que ça aide!

+0

Je comprends le setImageBitmap et le déclencheur de OnPostExexcute. Comment l'imageView retourne à la fonction d'appel. Pourrait-il être la vue est passée en référence? – james

Questions connexes