Как правильно уведомить этот адаптер, что его набор данных изменился?
Я 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
Вы можете найти об этом в Интернете, а также можете проверить эту ссылку.