2013-04-26 35 views
0

我想解析this site的文章的标题,并在Android应用程序的列表视图中显示它们。我的代码看起来是这样的:Jsoup解析与Android应用程序

public class MainActivity extends Activity { 

    ArrayList<String> mTitles = new ArrayList<String>(); 
    ListView mListView; 
    ArrayAdapter<String> mAdapter; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mListView = (ListView) findViewById(R.id.listView); 

     processTitles(); 

     mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, mTitles); 
     mListView.setAdapter(mAdapter); 
    } 

    private void processTitles() { 
     String URL = "http://beep.tv2.dk/nyheder"; 
     try { 
      Document doc = Jsoup.connect(URL).userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19").timeout(10000).get(); 
      Elements titles = doc.select("h2[class=title"); 
      for(Element title: titles) { 
       mTitles.add(title.text()); 
      } 

      if(mTitles.size() == 0) { 
       mTitles.add("Empty result"); 
      } 

     } catch (Exception ex) { 
      ex.printStackTrace(); 
      mTitles.clear(); 
      mTitles.add("Exception: " + ex.toString()); 
     } 
    } 


} 

尽管这里阅读堆栈溢出很多文章我想不通为什么我的应用程式经常当我每次打开它时。

+0

如果你看看你的日志,看到'NetWorkOnMainThreadException'然后搜索那个,你就会明白。 – wtsang02 2013-04-26 17:50:21

+0

发布logcat将帮助人们帮助你! – 2013-04-26 17:52:06

+0

@ user2229269当你得到这样的错误时,请始终发布logcat。 – 2013-04-26 18:10:33

回答

0

As @ wtsang02指出,您正在主线程上执行网络操作。你的processTitles逻辑应该在AsyncTask中完成。