【问题标题】:Android: Multiple-Column ArrayList to ListviewAndroid:多列 ArrayList 到 Listview
【发布时间】:2011-12-19 19:36:48
【问题描述】:

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

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

我已经阅读了 几个 到 listview 的 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 来完成这项工作吗?我需要以某种方式转换我的数组列表吗?

【问题讨论】:

    标签: java android listview arraylist


    【解决方案1】:

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

    更多信息

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

    这里的代码示例有点太大,但请查看here

    【讨论】:

    • 我遇到了同样的问题,希望得到更深入的答案...我已阅读 SimpleAdapter 上的文档页面,但仍不清楚它的用途。
    • 感谢 Dan,在查看了您提供的链接和其他一些示例之后,我现在理解了这个概念 - 不幸的是,实际获取 SharedPrefs 映射的机制 -> HashMap -> ArrayAdapter(HashMaps) -> SimpleAdapter -> ViewBinder 仍然超出我的范围......我会继续尝试。我想我真的应该在上学期学习高级数据对象的 Java 课程:-(
    • 我不确定你从哪里得到 SharedPreferences?也许我们可以开始聊天,这样我们就可以详细了解了。
    猜你喜欢
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多