本帖最後由 不知火羽 於 2012-9-30 23:38 編輯
你是用ArrayAdapter只能存一個欄位的資料
請改用SimpleAdapter試試看
首先先將抓下來資料一個一個的欄位和其值放到HashMap<String,String>內
再用ArrayList<HashMap<String,String>>將一筆一筆資料裝進去
再來是要準備1個Layout作為放資料的模版
最後再放進SimpleAdapter
SimpleAdapter的寫法外面有教學可以看
先宣告ArrayList<HashMap<String,String>>- ArrayList<HashMap<String,String>> datas;
複製代碼 74行修改的部分
- public void Parser(String urlData){
- String temp = null;
- int end = 0;
- int start =0;
- int counter = 0;
- do{
- HashMap<String,String> hm = new HashMap<String,Object>(); //先實體化HashMap作為放資料的容器
- start = urlData.indexOf("<td>", end+1);
- end = urlData.indexOf("</td>", start+1);
- temp = urlData.substring(start+4, end);
- if ( !temp.equals("-") )
- hm.put("userid",temp); //將userid丟到HashMap
- else
- hm.put("userid","");
-
- start = urlData.indexOf("<td>", end+1);
- end = urlData.indexOf("</td>", start+1);
- temp = urlData.substring(start+4, end);
- if ( !temp.equals("-") )
- hm.put("text",temp); //將text丟到HashMap
- else
- hm.put("text","");
- datas.add(hm); //將前面HashMap封裝的資料丟到ArrayList中(就是說將一筆資料轉成HashMap再丟進ArrayList)
- counter++;
- }while(counter < 10);
- }
複製代碼 35行修改的部分- private void getdata()
- {
- ArrayList<HashMap<String,String>> datas = new ArrayList<HashMap<String,String>>();
-
- String urlData = "";
- urlData = GetURLDate();
- Parser(urlData);
-
- final String[] items = {"userid","text"} //有幾個欄位就幾個欄位 請注意順序
- final int[] viewId = {R.id.textViewUserid,R.id.textViewText} //請建立一個新的Layout上面放兩的textView來作顯示userid和text使用
- final SimpleAdapter sa;
- sa = new SimpleAdapter(this, datas,R.layout.datas_list(你所創的layout名稱),items,viewId);
- listView.setAdapter(sa);
- }
複製代碼 Layout的做法就不多加說明 簡單來說就是開一個新的Layout
再拖兩個TextView進去(你要顯示多少資料欄位就拖都多少進來),TextView怎麼擺,你的ListView就怎麼顯示
上面 items和viewId這兩個陣列是互相對應的
|