从网站到Android应用程序的照片

时间:2013-04-20 12:26:07

标签: java android listview jsoup

我使用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);


}

}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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;
    }