0

对于我为实习而构建的 Android 应用程序,我正在尝试显示当前登录用户的工单列表并将它们显示在 ListView 中。让我粘贴一些我的代码,让你看看我目前在哪里:

    JSONArray finalResult = finalResultObject.getJSONArray(TAG_TICKETS);

    System.out.println("this is finalResult: " + finalResult);

    // creating new HashMap
    HashMap<String, String> map = new HashMap<String, String>();

    // adding each child node to HashMap key => value
    for (int i = 0; i < finalResult.length(); i++) {
        JSONObject c = finalResult.getJSONObject(i);

        if (c.has(TAG_CLIENT_NAME) && !c.isNull(TAG_CLIENT_NAME)) {
            String clientName = c.getString(TAG_CLIENT_NAME);
            map.put("client_name_map", clientName);
            // System.out.println(clientName);
        }
        if (c.has(TAG_PROJECT_NAME) && !c.isNull(TAG_PROJECT_NAME)) {
            String projectName = c.getString(TAG_PROJECT_NAME);
            map.put("project_name_map", projectName);
        }

        // adding HashList to ArrayList
        ticketList.add(map);
        // System.out.println(map);
    }

    ListAdapter adapter = new SimpleAdapter(SecondActivity.this, ticketList, R.layout.list_item, new String[] { "client_name_map", "project_name_map" }, new int[] { R.id.client_name,
            R.id.project_name });

    eventualListAdapter = adapter;

我中间有几张照片,把它们留在那里让你们看看我现在在看什么。我的问题是我确实获得了所需数量的项目,但它重复了相同的项目(因此它确实循环遍历数组,但不更新值)。我目前对 Android 完全陌生,因此仍在弄清楚要使用哪种适配器等。

最后,我将适配器传递给我在主线程中创建的 eventualListAdapter,因此我可以轻松调用它来更新 UI(我不确定这是否接近干净的方式,只是试图获取东西此时工作)

在此先感谢,丹尼斯

4

1 回答 1

0

您对所有 Itens 使用相同的 HashMap 实例。只需将 HashMap 创建移动到循环内部:

            // adding each child node to HashMap key => value
            for (int i = 0; i < finalResult.length(); i++) {
                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();

                JSONObject c = finalResult.getJSONObject(i);

                if(c.has(TAG_CLIENT_NAME)&&!c.isNull(TAG_CLIENT_NAME)){
                    String clientName = c.getString(TAG_CLIENT_NAME);
                    map.put("client_name_map", clientName);
                    //System.out.println(clientName);
                }
                if(c.has(TAG_PROJECT_NAME)&&!c.isNull(TAG_PROJECT_NAME)){
                    String projectName = c.getString(TAG_PROJECT_NAME);
                    map.put("project_name_map", projectName);
                }

                // adding HashList to ArrayList
                ticketList.add(map);
                //System.out.println(map);
            }
于 2013-11-11T18:13:52.310 回答