2011-11-01 95 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课程:-( –