2011-11-01 91 views
1

我想弄清楚在列表視圖中顯示json結果的最佳方法。我有以下的JSON響應從WCF RESTful服務來:Android:多列ArrayList到列表視圖

[ 
    { 
     "Class": "Lorem", 
     "Company": "Ipsum", 
     "Id": "XXXX", 
     "Name": "Avent" 
    }, 
    { 
     "Class": "Consectetur", 
     "Company": "Adipiscing", 
     "Id": "YYYYY", 
     "Name": "Nulla" 
    } 
] 

我讀過的ArrayList 幾個例子列表視圖,但沒有用多列的問題,我試圖繞過。我希望列在較小的文本中顯示「名稱」字段,並在其下方顯示「公司」名稱。我想將Id存儲爲用戶點擊該項目時的某種關鍵點,以便在另一個功能中調用該關鍵點,但我不確定如何以最佳方式做到這一點。

組類:

public class Group { 

    private String Id; 
    private String Name; 
    private String Class; 
    private String Company; 
} 

GSON解析聲明:

ArrayList<Group> groups = gson.fromJson(jsonString, new TypeToken<ArrayList<Group>>() {}.getType()) 

我一直在使用一個ArrayAdapter,但給我的感覺我可能需要爲此創建自定義適配器。我必須使用HashMap來完成這項工作嗎?我需要改變我的數據列表嗎?

回答

2

ArrayList是正確方向的第一步,接下來使用每行的HashMap,最後將其添加到您的SimpleAdapter

更多信息

每一行是由對應於多個數據點幾個視圖。爲了保持所有這些數據點的組織,我們把它們放到一個HashMap中,每行1個散列圖。爲了呈現多行數據,我們有一個ArrayList來保存每一行數據,每行有一個元素(HashMap)。有兩個步驟將它們放在一起。首先在SimpleAdapter的構造函數中傳遞ArrayList和Data to View映射。其次根據需要自定義SimpleAdapter.ViewBinder。該活頁夾可以自動處理TextViews的文本和ImageViews的可繪製資源ID。

這裏的代碼示例有點過大,但請檢查一下here

+0

我遇到了同樣的問題,並且會喜歡稍微更深入的答案......我已閱讀SimpleAdapter上的文檔頁面,但我仍不清楚它的用途。 –

+0

更新內容更多。 –

+0

感謝丹,看了你提供的鏈接和其他一些例子,我現在理解了這個概念 - 不幸的是,實際獲得SharedPrefs Map - > HashMap - > ArrayAdapter(HashMaps) - > SimpleAdapter - > ViewBinder的機制仍然超出我的範圍。我會繼續努力。我想我真的應該在上一學期參加Advanced Data Objects的Java課程:-( –