2012-03-14 184 views
1

我有一个应用程序将访问网络。我决定使用Spring Android作为RestAPI,并且在Thread的帮助下已经得到了这个简单演示的工作。我的问题是,我该如何改变它来填充一个实际的ListView,而不是只记录对象的输出?这里的其他一些问题使我相信AsyncTask可能是答案,但我仍然对如何更新UI有点困惑,因为我了解其他线程无法触摸它。Android - 正确的多线程/ UI更新

这是我现在有,减去创建RestTemplate,并发出请求的功能,因为我认为这是不相关的:

public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 

    new Thread(new Runnable() { 
     public void run() 
     { 
     // create a RestTemplate. This is used to communicate with the server. 
     RestTemplate restTemplate = getRestTemplate(); 

     String url = "http://192.168.2.14:8888/"; 

     JSONData[] jsonData = restTemplate.getForObject(url, JSONData[].class); 

     for(JSONData d : jsonData) 
     { 
      Log.d("TEST", d.getName() + " " + d.getId()); 
     } 
     } 
    }).start(); 

    setContentView(R.layout.main); 
    } 

回答

2

有几个选项,列在非常漂亮的文章(Android) Painless ThreadingAsyncTask是其中一个选项,它似乎符合您的需求,并且在UI线程上运行了多种方法,例如onPreExecuteonPostExecuteonProgressUpdate

+0

非常感谢您,无痛穿线文章正是我所需要的。 'AsyncTask'就是这样! – Josh 2012-03-14 13:46:12

4

如果想将UI从不同的线程改变,你可以使用Handler或Activity.runOnUiThread()。