0

我使用 ListView 和 Jsoup 创建显示来自网站的照片的简单应用程序,任何人都可以告诉我为什么模拟器每次都会崩溃?代码有什么问题?

公共类 MainActivity 扩展 Activity{

private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listview);
     listView = (ListView) findViewById( R.id.listview); 
     final ArrayList list = new ArrayList();

     Document doc = null;

    try {

        doc = (Document) Jsoup.connect("http://mongol.co.il/").get();
        Elements divs = ((Elements) doc).select("img[src$=.jpg]");

        for (org.jsoup.nodes.Element div : divs)
        {   
            list.add(div);
        }
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    ArrayAdapter adapter = new ArrayAdapter(this,
            android.R.layout.simple_list_item_1, list);
        listView.setAdapter(adapter);


}

}

4

2 回答 2

0

不要在您的 中发出 http 请求,我认为onCreate这会在 ICS 及更高版本中引发异常,因为您正在阻塞 UI 线程。

于 2013-04-20T12:40:50.433 回答
0

您好,我的申请中也有这个。

解决方案相当简单:

所有网络操作都必须在 Asyntask 或 Thread 中完成

我个人使用这样的 Asynctask:

        private class LoadImages extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            // Here you can do any UI operations like textview.setText("test");
        }

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub
Document doc = null;

    try {

        doc = (Document) Jsoup.connect("http://mongol.co.il/").get();
        Elements divs = ((Elements) doc).select("img[src$=.jpg]");

        for (org.jsoup.nodes.Element div : divs)
        {   
            list.add(div);
        }
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
        return null;
    }
于 2013-04-20T12:46:57.313 回答