作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 Google App Engine 获取字符串形式的数据,因此我必须在一个线程中执行此操作。接下来我想在 ListView 中显示它,我正在尝试执行类似以下代码的操作:
public void ShowContacts (){
new Thread(new Runnable() {
@Override
public void run() {
try
{
final RestClient client = new RestClient("http://xxx.appspot.com/client");
client.AddParam("userName", "user");
client.Execute(RequestMethod.GET);
_listView.post(new Runnable() {
@Override
public void run() {
String s = client.getResponse();
String[] items = s.split(";");
//adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, items);
//_listView.setAdapter(adapter);
}
});
}
catch (Exception e)
{
}
}
}).start();
}
这段代码对我不起作用。有没有办法从线程中获取一些值并将其设置为全局变量或直接在线程中构造 ArrayAdapter 或其他方式?
最佳答案
使用AsyncTask用于从服务器获取数据并添加到 ListView 为:
public class getDatafromserver extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... params) {
final RestClient client = new
RestClient("http://xxx.appspot.com/client");
client.AddParam("userName", "user");
client.Execute(RequestMethod.GET);
String s = client.getResponse();
return s ;
}
@Override
protected void onPostExecute(String result) {
String[] items = result.split(";");
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, items);
_listView.setAdapter(adapter);
}
}
从您的 Ui 线程启动此 AsyncTask 为:
new getDatafromserver().execute("");
关于Android 线程和 ArrayAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886325/
我是一名优秀的程序员,十分优秀!