【问题标题】:Combine Json Array Value to ListView Android将 Json 数组值组合到 ListView Android
【发布时间】:2017-04-05 10:29:33
【问题描述】:

这里是Android新手,json数组是这样的:

[{"SITE_NAME":"JAKARTA","GROUP_LABEL":"FINANCE","COMPANY_ID":"DDT","COMPANY_NAME":"PT. DIADYANI TIMBER","LABEL":"Expenses Req. (EXP) / Pembayaran","TOTAL":1,"SITE_ID":"JKT"},

{"SITE_NAME":"JAKARTA","GROUP_LABEL":"FINANCE","COMPANY_ID":"SPT","COMPANY_NAME":"PT. SARMIENTO PARAKANTJA TIMBER","LABEL":"Expenses Req. (EXP) / Pembayaran","TOTAL":3,"SITE_ID":"JKT"},

{"SITE_NAME":"JAKARTA","GROUP_LABEL":"FINANCE","COMPANY_ID":"TBP","COMPANY_NAME":"PT. TELAGA BAKTI PERSADA","LABEL":"Expenses Req. (EXP) / Pembayaran","TOTAL":1,"SITE_ID":"JKT"},

{"SITE_NAME":"JAKARTA","GROUP_LABEL":"FINANCE","COMPANY_ID":"SPT","COMPANY_NAME":"PT. SARMIENTO PARAKANTJA TIMBER","LABEL":"Payment Req(AP/PO)/Rencana Pembayaran","TOTAL":1,"SITE_ID":"JKT"}] 

我在我的布局中解析它们,ListView 像这样:

  • 图片链接:1

参见第 2 行和第 4 行, 有同名COMPANY_NAME 不同的LABEL

我想问的是,我可以加入他们,结果会是这样的:

PT.SARMIENTO PARAKANTJA 木材
费用要求(EXP) / Pembayaran - JKT (3)
付款请求(AP/PO)/Rencana Pembayaran - JKT(1)

那么将有 3 行,而不是 ListView 中具有相同 COMPANY_NAME 的 4 行。

我必须做什么?新手需要建议。 更新:

这是 HomeDataList.class

public class HomeDataList {

    public String COMPANY_NAME;
    public String TOTAL;
    public String SITE_ID;
    public String LABEL;

    public HomeDataList(String COMPANY_NAME, String LABEL, String SITE_ID,  String TOTAL)
    {
        this.COMPANY_NAME = COMPANY_NAME;
        this.TOTAL = TOTAL;
        this.LABEL = LABEL;
        this.SITE_ID = SITE_ID;
    }

}

这是我的解析代码:

 try {
            JSONArray jsonArray = new JSONArray(result);

            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject mJsonObjectProperty = jsonArray.getJSONObject(i);
                String COMPANY_NAME = mJsonObjectProperty.getString("COMPANY_NAME");
                String TOTAL = mJsonObjectProperty.getString("TOTAL");
                String SITE_ID = mJsonObjectProperty.getString("SITE_ID");
                String LABEL = mJsonObjectProperty.getString("LABEL");
                listItem.add(new HomeDataList(COMPANY_NAME, LABEL, SITE_ID, TOTAL));
            }
            homeDataAdapter.notifyDataSetChanged();

        } catch (JSONException e) {
            Log.e("APP", "exception", e);
        }

【问题讨论】:

  • 是的,你可以在此处解析代码
  • @AbhishekSingh 完成,我在帖子中更新了它

标签: android json listview


【解决方案1】:

我建议先在这里使用HashMap。

第一步

使用公司名称作为关键字

第 2 步

遍历每条记录,如果存在带有 companyname 的键,则为该键的对象附加值。否则以comapnyname为键将新成员添加到hashmap。

第 3 步

现在您拥有每个公司名称的唯一数据

第 4 步 您现在可以按照自己想要的方式拥有模型数组列表

这可能有更多的循环次数,但您需要遍历循环次数才能合并数据。

希望它对你有用。

【讨论】:

    猜你喜欢
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 2020-08-27
    • 1970-01-01
    相关资源
    最近更新 更多