我打电话一个 Web服务
到的AsyncTask
,调用 Web服务
我打电话一只叫方法 makeRequest()
在 doInBackground()
,我得到的回应另一种方法成功()
,在成功的方法,我更新列表视图
I am calling a webservice
through asynctask
, to call the webservice
i am calling one method named makeRequest()
in doInBackground()
, I am getting the response in another methods success()
, In success method i am updating the listview
但我得到的错误,如
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views."
下面林加入我的code.Im调用 synctask
从活动
Here Im adding my code.Im calling synctask
from activity
new MyTask(this,urlAsString,sp).execute();
这里是AsyncTask的类
here is the Asynctask class
class MyTask extends AsyncTask<Void, Void, Void> {
ProgressDialog progress;
String url;
SharedPreferences sp;
HomepageH2desk c;
public MyTask(HomepageH2desk context,String url,SharedPreferences sp) {
this.c = context;
this.url = url;
this.sp = sp;
progress = new ProgressDialog(this.c);
progress.setMessage("Loading...");
}
public void onPreExecute() {
progress.show();
}
public Void doInBackground(Void... unused) {
c.getTickets(url,sp);
return null;
//progress.setMessage("Loading...");
}
public void onPostExecute(Void unused) {
progress.dismiss();
}
}
下面即时得到 Web服务
响应
public void success(Object result) {
list = (ArrayList<Map<String, String>>) result;
this.adapter.setList(list);
this.adapter.notifyDataSetChanged();
}
列表视图
没有得到更新,示值误差
listview
is not getting updated and showing error
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
帮我解决这个问题...
Help me to solve this problem...
您应该更新您的列表是这样的。
You should update your List like this.
Activity_name.this.runOnUiThread(new Runnable() {
@Override
public void run() {
list = (ArrayList<Map<String, String>>) result;
this.adapter.setList(list);
this.adapter.notifyDataSetChanged();
}
});