2013-04-20 2 views
0

ListView와 Jsoup를 사용하여 웹 사이트에서 사진을 보여주는 간단한 앱을 만들면 누구나 에뮬레이터가 왜 때려 눕히는 지 알 수 있습니다. 코드의 문제점은 무엇입니까?웹 사이트 사진과 안드로이드 앱

공용 클래스 MainActivity는 활동 {

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

이 crashlog를 추가하십시오. –

+0

logcat에서 오류 세부 정보를 제공하십시오. – FireAndIce

+0

치명적인 예외 : 주 java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo {com.example.mongol/com.example.mongol.MainActivity} : java.lang.ClassCastException : android.app에 org.jsoup.nodes.Document가 있습니다. ActivityThread.performLaunchActivity (ActivityThread.java:2663) – Avi2107

답변

0

안녕하세요. 신청서에도이 내용이 있습니다.

솔루션

은 매우 간단하다 :

모든 네트워킹 활동이 Asyntask에서 수행해야하거나

나는 개인적으로이 같은 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; 
    } 
+0

고마워요! 이 수업은 활동을 확장 시켜서는 안됩니까? onCreate 메소드는 어떻습니까? – Avi2107

0

당신의 onCreate에 HTTP 요청을하지 마십시오,이 ICS에서 예외가 발생합니다 이상, 난 당신이 있기 때문에, 생각 UI 스레드를 차단합니다.

관련 문제