mercredi 6 mai 2015

MultiThreading with updating UI Thread after each download

I have a code written as follow in an ArrayAdapter for ListView.

Basically this is GridView or gallery for images

    if (url != null) /* Image is already placed */
    {
        // DO SOME STUFF
    }
    else
    {
        holder.pinImg.setImageDrawable(null);
        if (ping.isMediaBeingDownloaded == false)
        {
            new Thread(new Runnable()
            {
                @Override
                public void run()
                {
                    ping.isMediaBeingDownloaded = true;
                    ApiManager.getInstance().pingManager.downloadMediaOfPingFromServer(ping);
                    mContext.runOnUiThread(new Runnable()
                    {
                        @Override
                        public void run()
                        {
                            ping.isMediaBeingDownloaded = false;
                            ping.thumbnail = ImageUtils.setBitmapFromFile(url, mContext);
                            notifyDataSetChanged();
                        }
                    });
                }
            }).start();
        }
    }

Now technically i should use Threadpool executer , but i am not sure how can i update data once an image is downloaded since notifyDataSetChanged can only be called on UIThread.

How can i make a threadpool for such a thread.

Aucun commentaire:

Enregistrer un commentaire