Я 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();
}
}
};
Большое спасибо!
Вы не можете обновить ui из потока, отличного от нити ui. Что делает updateData? – Raghunandan
Ну, это нить ui. 'UpdateData()' устанавливает данные из адаптера и вызывает 'notifyDataSetChanged()' –