使用JSoup将html表解析为listview android

时间:2015-09-17 20:43:50

标签: android html listview jsoup android-arrayadapter

我正在自己创作一个项目。我遇到了一个问题,希望你们中的一些人能帮助我。我想将某个网站的html表解析为android listview。我已经有了一些代码,但遗憾的是我没有在listview中看到表格数据。所以出了点问题。我希望你能帮助我。

我知道调用正确的数据,因为当我将代码放入safari控制台时,我会得到一个我选择的表的结果。所以我认为doc.select();是正确的。

遗憾的是,问题仍未解决,因为我收到了NetworkOnMainThreadException。我知道我必须对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 个答案:

答案 0 :(得分:0)

如果选择正确,我们应该让HTML获得更多信息。 在我看来,你没有正确选择html标签。 您应该尝试在td上找到属性,以便您只能选择它们。 例如,如果主题是css类,您可以通过以下方式选择它:

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

也许这个link对你有帮助(这是我关于JSOUP的帖子)。 希望它能帮到你!