如何将H2标签订购到Jsoup列表中

时间:2016-08-03 23:44:09

标签: java android parsing web jsoup

我想拉一个包含多种变体的h2类。 posttitle h2类包含每个帖子标题。

<h2 class="posttitle">
<a href="website.com"rel="bookmark">    Text</a>
</h2>

我想使用jsoup将每个人拉入我的应用程序。我已经能够从&#34; postitle&#34;中提取所有文本。类。

@Override
    protected Void doInBackground(Void... voids) {
        try {
            Document doc = Jsoup.connect("https://uhsswordandshield.com").get();
            Feed = doc.select("h2.posttitle a[href]").text();

        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

背景是它是我学校的新网站,我想拉新闻文章的标题。每篇文章的标题都是后期课程的一部分。

这就是它现在的样子: 标题1标题2标题3标题4 ....

我想要的是什么:
标题1 标题2
标题3
标题4
...

我可以把它放到textview中,但它都显示为一个大块,所有的标题都放在一起。我想把每个单独的字幕放入数组列表中。有人可以告诉我这是否可行以及我将如何做到这一点。谢谢!

修改 我稍微更改了代码,我不再有任何错误。

public class MainActivity extends AppCompatActivity {

   public static ArrayList<String> titles;
//Declare Listview
public ListView lv ;
//Array Adapter
public ArrayAdapter<String> arrayAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, titles);
    lv = (ListView) findViewById(R.id.lv);
    lv.setAdapter(arrayAdapter);
//call AsyncTask
        new Feed().execute();


}
//Async Test
private class Feed extends AsyncTask<String,Void,ArrayList<String>>{

    //Get post title class
    @Override
    protected ArrayList<String> doInBackground(String... voids) {

        try {
            Document doc = Jsoup.connect("https://uhsswordandshield.com").get();
            Elements e = doc.select("h2.posttitle");
            for (Element el:e) {
            titles.add(el.text());
            }}
         catch (IOException e) {
            e.printStackTrace();
        }
        return titles;
    }
}
}

然而,这导致我得到一个空指针异常错误,我的应用程序每次都崩溃。

修改 所以我能够找出为什么我得到空指针异常。在我宣布它之前,我正在调用我的数组列表。但是,我仍然无法将posttitle添加到数组列表中。这是我现在的主要活动。

   public class MainActivity extends AppCompatActivity {

   public ArrayList<String> titles = new ArrayList<String>();

   //Declare Listview

//Array Adapter
public ArrayAdapter<String> arrayAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ListView lv = (ListView) findViewById(R.id.lv);

    arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, titles);
    lv.setAdapter(arrayAdapter);
    //Declare Button
    new Feed().execute();




        }



//call AsyncTask




//Async Test
private class Feed extends AsyncTask<Void,Void,ArrayList<String>>{

    //Get post title class
    @Override
    protected ArrayList<String> doInBackground(Void... voids) {


        try {
            Document doc = Jsoup.connect("https://uhsswordandshield.com").get();
            Elements e = doc.select("h2.posttitle");
            for (Element el:e) {
            titles.add(el.text());
            }}
         catch (IOException e) {
            e.printStackTrace();
        }
        return titles;
    }
}
}

0 个答案:

没有答案