سؤال

I am asynchronously downloading images that will be part of a GridView. And to update the GridView within the onCreate(), I call notifyDataSetChanged(); on a runOnUiThread();

Now, my question is:

Is there a better way to do this? I am setting the Thread to sleep for 2 seconds to ensure the images will be there the time the data in the adapter gets changed. But, of course, I am hardcoding this condition (It may take more than 2 seconds), and the internet connection might fail preventing the GridView update correctly.

Here is the Thread,

private Runnable myRunnable = new Runnable(){

@Override
public void run() {
    try {
        Thread.sleep(2000); 
        updateData(); // contains notifyDataSetChanged()
        if(images[0] == null){
        Toast.makeText(getApplicationContext(), 
"Your Internet Connection is not working properly", Toast.LENGTH_SHORT).show();                 
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    }

};

Thank you very much!

هل كانت مفيدة؟

المحلول

You can use AsyncTask class. It has three important abstract functions. doInBackground onPostExecute onPreExecute

You can search about this on internet and also can check this link.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top