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