Android:列表视图的多列ArrayList

时间:2011-11-01 20:16:56

标签: java android listview arraylist

我试图找出在listview中显示json结果的最佳方法。我有来自WCF RESTful服务的以下json响应:

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

我已经阅读了 arraylist到listview的几个示例,但是没有一个我想要解决的多列问题。我希望列显示“名称”字段大,而“公司”名称则显示在较小的文本中。我想将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才能使其工作?我需要以某种方式改变我的arraylist吗?

1 个答案:

答案 0 :(得分:2)

ArrayList是正确方向的第一步,接下来每行使用一个HashMap,最后将其添加到SimpleAdapter

更多信息

每行由几个视图组成,这些视图对应于多个数据点。为了保持所有这些数据点的有序,我们将它们放入HashMap,每行1个哈希映射。为了呈现几行数据,我们有一个ArrayList来保存每一行数据,每行有一个元素(HashMap)。将这一切放在一起有两个步骤。首先在SimpleAdapter的构造函数中传递ArrayList和Data to View映射。其次,根据需要自定义SimpleAdapter.ViewBinder。绑定器可以自动处理TextViews的文本和ImageViews的可绘制资源ID。

此处的代码示例有点过大但请查看here