2013-04-05 146 views
1

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

不过,我每次运行这个时候就会崩溃,我有不知道为什么,因为我之前使用一个简单的数组做了这个。如果有人能指出我做错了什么,并给出一个非常好的解决方案,谢谢!

+0

LogCat会告诉你什么地方出了问题,但是这样一个轻量级的catch块会让你很难。将'e.printStackTrace()'添加到catch块并通读新的堆栈跟踪,您可能会看到一个NetworkOnMainThreadException。完成此操作后,单击[编辑]发布您看到的警告和错误,这样我们就不必猜测了。 – Sam 2013-04-05 18:21:33

+0

您无法在'主线程'上执行联网操作。你需要将你的解析移动到后台线程中,例如'AsyncTask' - 这也允许在工作完成后更新UI。 – Sajmon 2013-04-05 18:23:44

回答

4

首先不给类名ListView这是Android的

第二预定义类不要在UI线程中执行网络操作。

编辑:

原因:

的Android 3.x版或更多的设备将不允许网络操作的UI线程中执行,当您尝试这样做,它会抛出一个例外说你正在UI Thread上执行网络操作,即NetworkOnMainThreadException。所以你需要做的是创建一个单独的线程来执行网络操作或AsyncTask。

+0

为什么downvote ...让我知道如果我错了..不要故意downvote – Pragnani 2013-04-05 18:23:46

+0

我真的不明白你对我说的话。我对这种发展非常陌生,你能够更具体吗? – 2013-04-05 18:36:29

+0

你不能证明他为什么会遇到异常。 – 2013-04-05 19:40:34

0

你的崩溃很有可能是android.os.NetworkOnMainThreadException被抛出。应用程序现在默认以严格模式运行,这是因为操作系统可以让你知道你做的事情非常非常错误。

您需要在后台线程上做任何和所有的网络请求,而不是在UI线程上,这会导致UI在网络请求发生时不响应用户,并可能导致ANR对话。

请参阅此question的答案,了解如何修复代码以遵守最佳做法。

相关问题