目前,我已經添加到一個數組列表,14元,但我希望他們能夠顯示在列表視圖活動到目前爲止我有:如何在ListView中顯示一個arrayList?
public class ListView extends ListActivity{
static final String baseURL ="http://www.dublincity.ie/dublintraffic/cpdata.xml?1354720067473";
TextView tvcp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
StringBuilder URL = new StringBuilder(baseURL);
String fullURL = URL.toString();
try{
URL website = new URL(fullURL);
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
HandelingXML gettingData = new HandelingXML();
xr.setContentHandler(gettingData);
xr.parse(new InputSource(website.openStream()));
ArrayList<CarparkNode>carparks = gettingData.getCarparks();
this.setListAdapter(
new ArrayAdapter<CarparkNode>(ListView.this,R.layout.listview, android.R.id.list, carparks)
);
}catch(Exception e){
tvcp.setText("error");
}
}
}
不過,我每次運行這個時候就會崩潰,我有不知道爲什麼,因爲我之前使用一個簡單的數組做了這個。如果有人能指出我做錯了什麼,並給出一個非常好的解決方案,謝謝!
LogCat會告訴你什麼地方出了問題,但是這樣一個輕量級的catch塊會讓你很難。將'e.printStackTrace()'添加到catch塊並通讀新的堆棧跟蹤,您可能會看到一個NetworkOnMainThreadException。完成此操作後,單擊[編輯]發佈您看到的警告和錯誤,這樣我們就不必猜測了。 – Sam 2013-04-05 18:21:33
您無法在'主線程'上執行聯網操作。你需要將你的解析移動到後臺線程中,例如'AsyncTask' - 這也允許在工作完成後更新UI。 – Sajmon 2013-04-05 18:23:44