![](/img/trans.png)
[英]How to delete specific html class with content using Java Html Class
[英]How to get HTML content using class name?
我正在嘗試創建一個類,該類使用jsoup庫來制作網站中元素的對象。
閱讀文檔后,這就是我所擁有的:
public class storyObj {
public String title;
public String preview;
public String date;
String url = "http//:davisclipper.com";
Bitmap bitmap;
private class Title extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
try {
Document doc = Jsoup.connect(url).get();
Elements storyTitle = doc.getElementsByClass("story_item_title");
title = storyTitle.attr("content");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
public String getTitle(){
return title;
}
在我的主要活動中,我設置了一個TextView來獲取返回的標題:
storyObj story = new storyObj();
String text = story.getTitle();
TextView title = (TextView) findViewById(R.id.main_title);
title.setText(text);
我得到的只是一個空字符串。
您似乎誤會了線程的工作方式。 Jsoup發生在后台。 同時,您將繼續在主線程中設置文本,但不能保證該文本
您需要將異步任務移到活動中。
並且您需要為其實現onPostExecute,在其中您將title.setText(text);
您還需要使doInBackground return title
像這樣
this.title = (TextView) findViewById(R.id.main_title);
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
try {
Document doc = Jsoup.connect(url).get();
Elements storyTitle = doc.getElementsByClass("story_item_title");
return storyTitle.attr("content");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
public void onPostExecute(String content) {
MainActivity.this.title.setText(content);
}
}.execute();
除非該網站是由Javascript動態生成的,否則Jsoup是錯誤的庫。 雖然不確定本地新聞網站是否先進
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.