我试图找出在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吗?
答案 0 :(得分:2)
ArrayList是正确方向的第一步,接下来每行使用一个HashMap,最后将其添加到SimpleAdapter。
更多信息
每行由几个视图组成,这些视图对应于多个数据点。为了保持所有这些数据点的有序,我们将它们放入HashMap,每行1个哈希映射。为了呈现几行数据,我们有一个ArrayList来保存每一行数据,每行有一个元素(HashMap)。将这一切放在一起有两个步骤。首先在SimpleAdapter的构造函数中传递ArrayList和Data to View映射。其次,根据需要自定义SimpleAdapter.ViewBinder。绑定器可以自动处理TextViews的文本和ImageViews的可绘制资源ID。
此处的代码示例有点过大但请查看here。