为了账号安全,请及时绑定邮箱和手机立即绑定

如何计算列表中相似的id对象并显示在recyclerview中?

如何计算列表中相似的id对象并显示在recyclerview中?

哔哔one 2023-01-05 10:03:19

我有一个 JSON 数组,因为我需要使用 ParentCommentID 进行匹配计数,并使用文本视图将数据解析到 recyclerview 中,同时计数我只得到一个位置的数字计数,其他项目也一样,任何帮助。


{

  "d": {

    "results": [

      {

        "__metadata": {

          "id": "e7433825-6771-4f5e-96c7-c4d2674d7764",

          "uri": "",

          "etag": "\"2\"",

          "type": "SP.Data.InquiryDiscussionsListListItem"

        },

        "Author": {

          "__metadata": {

            "id": "f064775c-6161-4bdb-9f4d-8bc6a898d218",

            "type": "SP.Data.UserInfoItem"

          },

          "Title": "Submitter1"

        },

        "Id": 1501,

        "ID": 1501,

        "Title": null,

        "Created": "2019-06-06T04:15:17Z",

        "ParentCommentID": "1439",

        "Comment": "<div class=\"ExternalClass8C333A77B6564A53BED74CA1BA2D2A10\">

        reply add for 009</div>",

        "CommentType": null,

        "CommentDocumentName": null,

        "AppID": "1083",

        "Role": "Customer"

      },

      {

        "__metadata": {

          "id": "e92f708f-93dc-4587-8c4f-5518ed24f360",

          "uri": "",

          "etag": "\"2\"",

          "type": "SP.Data.InquiryDiscussionsListListItem"

        },

        "Author": {

          "__metadata": {

            "id": "209d2d9a-bb07-4064-aaa0-231ad881a80f",

            "type": "SP.Data.UserInfoItem"

          },

          "Title": "Submitter1"

        },

        "Id": 1500,

        "ID": 1500,

        "Title": null,

        "Created": "2019-06-06T04:14:55Z",

        "ParentCommentID": "1439",

        "Comment": "<div class=\"ExternalClass44B1A0BB4D314C57BEE20141BFF10491\">comment add for       009</div>",

        "CommentType": null,

        "CommentDocumentName": null,

        "AppID": "1083",

        "Role": "Customer"

      },

      {

        "__metadata": {

          "id": "ec112002-3132-4bc1-8f85-03fbd9fda11d",

          "uri": "",

          "etag": "\"2\"",

          "type": "SP.Data.InquiryDiscussionsListListItem"

        },

      }

    ]

  }

}


例如 id 1439,有两个ParentCommentID,所以在这种情况下,对于 id1439应该有两条评论,我试图在我的 recyclerview 适配器中使用 for 但它不起作用。


查看完整描述

1 回答

?
吃鸡游戏

TA贡献1565条经验 获得超7个赞

我认为您需要遍历结果列表,当您找到具有父评论的结果时,您进入地图,获取父评论,将其计数加一并将其粘贴回地图中:


假设您的 Result 类是这样的:


class Result {

    private String id;

    private String parentCommentID;


    public Result(String id, String parentCommentID) {

        this.id = id;

        this.parentCommentID = parentCommentID;

    }


    // GETTERS/SETTERS

}

你有一个包含 3 个结果的讨论列表


    discussionsList = Arrays.asList(

        new Result("1439", null),

        new Result("1500", "1439"),

        new Result("1801", "1439")

    );

像你的情况一样, 1439 没有父母, 1500 和 1501 都有 1439 作为父母


然后你可以做这样的事情:


Map<String, Integer> commentsCountMap = new HashMap<>();

// Loop through the discussion Map

for(Result res : discussionsList) {

    String parentCommentId = res.getParentCommentID();

    // If the Result has a parent comment

    if(parentCommentId != null) {

        // get the count for this parent comment (default to 0)

        int nbCommentsForParent = commentsCountMap.getOrDefault(parentCommentId, 0);

        // increment the count

        nbCommentsForParent++;

        // Update the Map with the new count

        commentsCountMap.put(parentCommentId, nbCommentsForParent);

    }

}


System.out.println(commentsCountMap);

这输出


{1439=2}


查看完整回答
反对 回复 2023-01-05

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信