アクティビティを開くと、私は長い(10 sek)プロセスを開始します。このプロセスは10項目のリストを作成します。 10秒後に終了します。その結果リストは10秒後に表示されます(UIアップデート)。AsyncTask.onProgressUpdate()が終了したときのUIの更新方法
しかし、作成した直後にすべてのアイテムを表示する必要があります。したがって、最初の項目は1秒後に表示する必要があります。
だから私はこのためにAsyncTaskを作成します。
onCreate() {
BackgroundTask backgroundTask = new BackgroundTask();
backgroundTask.execute(newsDetailsList);
}
private class BackgroundTask extends AsyncTask<List<NewsDetails>, NewsDetails, Void> {
@Override
protected Void doInBackground(List<NewsDetails>... newsDetailsList) {
List<NewsDetails> passedList = newsDetailsList[0];
for (NewsDetails newsDetails : passedList) {
publishProgress(newsDetails);
}
return null;
}
@Override
protected void onProgressUpdate(final NewsDetails... passedNewsDetails) {
super.onProgressUpdate(passedNewsDetails);
final NewsDetails newsDetails = passedNewsDetails[0];
// here create UI for new items newsDetails
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
}
}
しかし、UIがonPostExecute(10秒後)()仕上げ後に更新されます。しかし、すべての仕上げ(10回)メソッドの後にUIを更新する必要がありますonProgressUpdate()。
どうすればいいですか?
私はリストのリストビューを使用していません。私は組み込みLinearlayoutsを使用してUiを作成します。したがって、10項目のリストは、1つのメイン直線レイアウトの10線形レイアウトです。結果として、私はadapter.notifyDatasetChanged()を呼び出すことができません。 – Alexei