目前,我已经添加到一个数组列表,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