2015-09-17 78 views
2

我正在自己的項目上工作。我遇到了一個問題,我希望你們中的一些人想幫助我。我想解析一個HTML表格從一個特定的網站到android listview。我已經有一些代碼,但不幸的是我沒有在我的列表視圖中看到表格數據。所以有些事情出錯了。我希望你能幫助我。解析HTML表格到ListView Android與JSoup

我知道一個調用正確的數據,因爲當我把代碼放在safari控制檯中時,我會得到一個我選擇的表的結果。所以我認爲doc.select();是對的。

不幸的是問題仍然沒有解決,因爲我得到了一個N​​etworkOnMainThreadException。我知道我必須用Async做點什麼。我查看了更多網站,但我無法找到有關Async的良好解釋。如果有人會幫助我,將不勝感激。

這是我的代碼:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_clubkampioenschappen_singleen_dubbel); 
    this.setTitle("Clubkampioenschappen Single en Dubbel"); 

    ArrayList<String> list = new ArrayList<String>(); 

    Document doc = null; 
    try { 
     doc = Jsoup.connect("https://tennisnaarden.planmysport.com/portal/page/pmsportal30/TVNaarden/Toernooien/Clubtoernooi").get(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    Elements elements = doc.select("#pcnt1383_8158836_1383_4326089_4326089 td:first-child"); 

    //list.add("Onderdelen"); 

    for(int i=0;i<elements.size();i++) 
    { 

     list.add(elements.get(i).text()); 
     System.out.println(elements.get(i).text()); 

    } 

    ListAdapter OnderdeelAdapater = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list); 
    ListView Onderdelen = (ListView) findViewById(R.id.Onderdelen); 
    Onderdelen.setAdapter(OnderdeelAdapater); 
} 
+1

如果您的「嘗試」塊失敗,則需要事後返回。相反,您嘗試使用「select」語句從** doc **中讀取數據,但如果「try」失敗,** doc **將爲NULL,並且會出現另一個錯誤。 – jp2code

回答

0

我們應該有HTML有更多的信息,如果選擇是正確的。 在我看來,你不選擇正確的HTML標籤。 您應該嘗試在td上找到一個屬性,以便您只能選擇它們。 例如,如果主題是CSS類,你可以用這種方式來實現:

Elements topicList = doc.select("h2.topic"); 

也許這link可以對你有所幫助(這是我關於JSOUP後)。 希望它可以幫助你!

+0

我知道一個調用正確的數據,因爲當我把代碼放在safari控制檯中時,我會得到一個我選擇的表的結果。所以我認爲doc.select();是對的。 –

+0

感謝您的鏈接,但可以解釋一些有關parseURL類的內容。我不明白。代碼在做什麼? –

+0

正如你已經知道,有不同的方法來解析一個HTML標記: - 直接使用標記 - 使用css類 我建議你看看是否有一個特定的CSS類n td標記,以便您可以「捕獲「只是td。在這種情況下,您可以使用 tag.cs​​s_class – FrancescoAzzola