Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

有点丢人,层级数据处理成你框架的样子,搞了几个小时失败,只有求助大佬 #1

Copy link
Copy link
@GuoZhaoHui628

Description

@GuoZhaoHui628
Issue body actions

大佬你好,你的框架挺适合我的,但是我要把后台返回给的数据处理成你demo中的样子,一直不成功

[
    {
        "ends": 1,
        "parentId": 190,
        "powerId": 145,
        "powerName": "江国庆"
    },
    {
        "ends": 1,
        "parentId": 1,
        "powerId": 190,
        "powerName": "界港分布式"
    },
    {
        "ends": 1,
        "parentId": 190,
        "powerId": 197,
        "powerName": "阳光伟1"
    }
]

差不多是这样子的,返回集合中的对象长度是不固定的,如果长度为1,集合中就一个对象,那这个对象的parentId一定是1。如果长度大于1,那集合中所有的对象一定有且只有一个parentId对象为1,相当于就只有一个最大的父级,没有和它平级的。
比如这里 集合中三个对象,其中第二个对象的parentId=1,那么最大的父级就是它,然后它的powerid是其他子级的parentId,就通过这样关联起来。
所以现在我要把数据处理成你demo中的,我是这样做的。

public class PowerModel {

    //通过注解的方式,进行model转换
    @NodeId                 //必填字段
    public String id;
    @NodeName               //必填字段
    public String name;

    @NodePid                //必填字段
    public String parentId;

    @NodeChild
    public List<PowerModel> child;  //非叶子节点必填字段
..............
}

这是model,然后首先对接受到的后台数据集合判断下长度,如果长度为1,那就简单了

 if(data.length()==1){  //因为我是在新建demo中尝试,所以这里数据是一个 json文件
                JSONObject jsonObject = data.getJSONObject(0);
                PowerModel model = new PowerModel();
                model.id = jsonObject.getInt("powerId") + "";
                model.parentId = jsonObject.getInt("parentId") + "";
                model.name = jsonObject.getString("powerName");
                model.child = null;
                result.add(model);
                return  result;
            }

这里直接赋值,然后将child设置为null,没有子节点,然后如果数据长度大于1,把所有的parentId添加到一个集合中,然后去重,看下去重后还剩下多少个数据,这里parentId集合中有几个数据就是有几级

else if(data.length()>1){
                for (int i = 0; i < data.length(); i++) {
                    JSONObject jsonObject = data.getJSONObject(i);
                    
                    //将所有的parentId添加到一个集合中
                    int parentId = jsonObject.getInt("parentId");  
                    parentIds.add(parentId);
                    
                    //将json数据全部赋值并且添加到新model的集合中
                    PowerModel model = new PowerModel();
                    model.id = jsonObject.getInt("powerId") + "";
                    model.parentId = jsonObject.getInt("parentId") + "";
                    model.name = jsonObject.getString("powerName");
                    model.child = null;    //假设全部是子节点
                    result.add(model);
                }

                //去重
                removeDuplicate(parentIds);

                Log.d(TAG, "parentIds-->" + parentIds.toString());

有点尴尬了,接下来我所有的思路都有问题,得不出正确的结果,所以请求大佬帮帮忙,帮我瞧一瞧.....

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.