Skip to content

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

@GuoZhaoHui628

Description

@GuoZhaoHui628

大佬你好,你的框架挺适合我的,但是我要把后台返回给的数据处理成你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