ダウンロードした解析済みのjsonデータに基づいてコンテンツを作成するアクティビティのレイアウトを拡張する方法を考えています。
1)データのダウンロード、2)解析、3)UIの更新にAsyncTaskを使用することを考えましたが、使用しているListAdapterはメインスレッド上にある必要があるため、AsyncTaskのonPostExecuteメソッドに配置できません。私はどのようなアプローチを取るべきかについて少し混乱しています。どんなポインタでも大歓迎です。
ダウンロードした解析済みのjsonデータに基づいてコンテンツを作成するアクティビティのレイアウトを拡張する方法を考えています。
1)データのダウンロード、2)解析、3)UIの更新にAsyncTaskを使用することを考えましたが、使用しているListAdapterはメインスレッド上にある必要があるため、AsyncTaskのonPostExecuteメソッドに配置できません。私はどのようなアプローチを取るべきかについて少し混乱しています。どんなポインタでも大歓迎です。
次の例のようにします。
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
http://developer.android.com/reference/android/os/AsyncTask.html
doInBackground(Params... para)で好きなことをしてください。UI または ListAdapter を更新する場合。publishProgress (Params pa)を呼び出すと、onProgressUpdate(Integer.. progress)が呼び出されます。この関数では、UI を更新したり、データを更新したり、メイン スレッドで必要なことを実行したりできます。
それが役に立てば幸い。