Как правильно уведомить этот адаптер, что его набор данных изменился?

Я asynchronously загрузка изображений, которые будут частью GridView, И обновить GridView в пределах onCreate(), Я звоню notifyDataSetChanged(); на runOnUiThread();

Теперь мой вопрос:

Есть лучший способ сделать это? Я устанавливаю Thread чтобы спать в течение 2 секунд, чтобы убедиться, что изображения будут там, в то время как данные в адаптере меняются. Но, конечно, я жестко запрограммировал это условие (это может занять более 2 секунд), и подключение к Интернету может прерваться, что помешает GridView обновлять правильно.

Здесь 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();
    }
    }

};

Большое спасибо!

1 ответ

Решение

Ты можешь использовать AsyncTask учебный класс. У него три важные абстрактные функции.doInBackground onPostExecute onPreExecute

Вы можете найти об этом в Интернете, а также можете проверить эту ссылку.

Другие вопросы по тегам