Мне нужен совет, потому что эта вещь заняла у меня достаточно времени, чтобы рассердиться на меня из-за недостатка знаний ... Я пытаюсь создать ListView, заполненный данными JSOUP. И часть JSOUP находится в AsyncTask. Вот мой код:Android - ListView с реализацией AsyncTask с использованием JSOUP
public class ListaActivity extends ActionBarActivity {
private List<String> mList = new ArrayList<>();
private ListView mListView;
private ListAdapter mAdapter;
public Elements job;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
mListView = (ListView) findViewById(R.id.list);
new NewThread().execute();
mAdapter = new ListAdapter(this, mList);
mListView.setAdapter(mAdapter);
}
public class NewThread extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... arg) {
Document doc;
try {
doc = (Document) Jsoup.connect("http://www.somewebsite.com")
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0").get();
title = doc.select("h3.something-to-extract a[href]");
for (Element titles : title) {
mList.add(titles.text()+"\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
}
ИМО это что-то с JSOUP части, потому что когда я удалить все содержимое од doInBackground
и положить внутрь только
mList.add("Something 1");
mList.add("Something 2");
затем он работает. Пожалуйста, помогите мне как-нибудь.
EDIT: Я хочу, чтобы разобрать данные из этого фрагмента HTML:
<h2 class="title">
<a href="/jstpl/london/11697582"
title="You just have to wait" class="titles">
Nothing else to say
</a>
Я хотел сохранить "Nothing else to say
" в mList
, такие как еще названия существующих в моем HTML коде. Работает только одна парсинговая часть.
Можете ли вы предоставить образец HTML заголовка, который вы пытаетесь извлечь? –
Я думаю, проблема в том, что вы не вызываете 'notifyDataSetChanged' на' mAdapter'. Я опубликовал как ans ниже .. –