最初のオプション:
非UiスレッドからUIを更新するにはrunOnUiThreadを使用します。コードを次のように変更します。
new Thread(new Runnable(){
public void run()
{
ap=(ArrayList<Application>) getBoughtApps(android_id);
Current_Activity.this.runOnUiThread(new Runnable() {
public void run() {
adapter1 = new MyCustomAdapter(ap);
listView = ( ListView ) MainActivity.this.findViewById(R.id.listview);
changeAdapter();
//Your code here..
}
});
}
}).start();
2番目のオプション:
ネットワーク操作を行うため、またはアプリケーションがバックグラウンドからUiを更新する必要がある場合は、スレッドの代わりにAsyncTaskを使用できます。次のように使用して、現在のコードを変更できますAsyncTask
。
private class CallwebTask extends AsyncTask<Void, Void, String>
{
protected ArrayList<Application> doInBackground(String... params)
{
ap=(ArrayList<Application>) getBoughtApps(android_id);
return ap; // Return ArrayList<Application>
}
protected onPostExecute(ArrayList<Application> result) {
Log.i("OnPostExecute :: ", String.valueOf(result.size()));
//Put UI related code here
adapter1 = new MyCustomAdapter(result);
listView = ( ListView ) MainActivity.this.findViewById(R.id.listview);
changeAdapter();
}
}
AsyncTask
スレッドを開始する場所にこの行を配置し始めます。
new CallwebTask().execute();