我想拉一个包含多种变体的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;
}
}
}