我想解析一個網站使用Jsoup,把我得到的信息和填充ListView
。該HTML看起來像這樣:使用Jsoup填充ListView
<ul class="list_view">
<li>
<a href="/username/" >
<table class="pinner">
<tbody>
<tr>
<td class="first_td">
<img src="http://myimgurl.com/img.jpg">
</td>
<td>
<span class="user_name">User Name</span>
</td>
</tr>
</tbody>
</table>
</a>
</li>
</ul>
所以,從這個HTML,我需要從一個標籤獲得href
,也是span.user_name文本。我需要把這兩個元素都存儲在一個HashMap
(我認爲??)現在,我有這樣的AsyncTask
像這樣(但我不認爲我這樣做是正確的方式):
private class MyTask extends AsyncTask<Void, Void, List<HashMap<String, String>>> {
@Override
protected List<HashMap<String, String>> doInBackground(Void... params) {
List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();
try {
Document doc = Jsoup.connect("http://myurl.com").get();
Elements formalNames = doc.select("li a table tbody tr td span.user_name");
Elements userNames = doc.select("li a");
for (Element formalName : formalNames) {
map.put("col_1", formalName.text());
fillMaps.add(map);
System.out.println(formalName.text());
}
for (Element userName : userNames) {
map.put("col_2", userName.attr("href").toString());
fillMaps.add(map);
System.out.println(userName.attr("href").toString());
}
} catch (IOException e) {
e.printStackTrace();
}
return fillMaps;
}
@Override
protected void onPostExecute(List<HashMap<String, String>> result) {
String[] from = new String[] {"col_1", "col_2"};
int[] to = new int[] { R.id.text1, R.id.text2 };
ListView _listview = (ListView)findViewById(R.id.listView1);
SimpleAdapter _adapter = new SimpleAdapter(FriendsActivity.this, fillMaps, R.layout.friends, from, to);
_listview.setAdapter(_adapter);
}
}
這成功地打印出我想要的信息,但它不填充ListView
。我已經嘗試重新安排等,但仍然沒有運氣。我會非常感激任何幫助。
感謝您的回覆@tjPark。我的代碼中沒有getView()。也許這是問題的一部分?你有沒有我可以如何實現這個的例子? – Shan 2013-04-24 03:00:30
@Shan我的回覆可能是錯誤的,現在我看到你的構造函數有點不同了..但是,本教程非常適合listview:[http://www.vogella.com/articles/AndroidListView/article.html](http ://www.vogella.com/articles/AndroidListView/article.html) – tjPark 2013-04-24 13:54:11
我從List更改爲Map,並且它現在填充ListView,但它只是一次又一次地添加最後一組col_1,col_2。 – Shan 2013-04-25 00:18:37