Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在GWT单元浏览器或单元树的同一级别添加叶节点和非叶节点_Gwt_Cellbrowser - Fatal编程技术网

在GWT单元浏览器或单元树的同一级别添加叶节点和非叶节点

在GWT单元浏览器或单元树的同一级别添加叶节点和非叶节点,gwt,cellbrowser,Gwt,Cellbrowser,我想在GWT CellBrowser/单元树中的同一级别添加非叶以及叶节点。我能做吗?如果是,如何进行?因为在返回DefaultNodeInfo时,我没有选择返回两种ListDataProviders 一个简单的解决方案是创建一个超类或接口节点,NonLeafNode和LeafNode类扩展/实现该节点: public class NonLeafNode extends Node{ } 或 然后,您可以为CellBrowser或CellTree提供一个ListDataProvider,它提供两

我想在GWT CellBrowser/单元树中的同一级别添加
非叶
以及
节点
。我能做吗?如果是,如何进行?因为在返回
DefaultNodeInfo
时,我没有选择返回两种
ListDataProviders

一个简单的解决方案是创建一个超类或接口节点,NonLeafNode和LeafNode类扩展/实现该节点:

public class NonLeafNode extends Node{
}

然后,您可以为CellBrowser或CellTree提供一个ListDataProvider,它提供两种类型的节点。在底层模型(例如TreeView模型)中,需要按如下方式调整isLeaf(对象o)和getNodeInfo(T值)函数:

public boolean isLeaf(Object value) {
    if (value instanceof NonLeafNode) return true;
    if (value instanceof LeafNode) return false;
    return false;
}

public <T> getNodeInfo(T value){
    if (value instanceof NonLeafNode) 
         // return node info for non-leaf-node
        ;
    else if (value instanceof LeafNode)
         // return node info for leaf node
        ;
    return null;
}
公共布尔isLeaf(对象值){
if(value instanceof NonLeafNode)返回true;
if(value instanceof LeafNode)返回false;
返回false;
}
公共getNodeInfo(T值){
if(非叶节点的值instanceof)
//返回非叶节点的节点信息
;
else if(叶节点的值实例)
//返回叶节点的节点信息
;
返回null;
}
我的出路

private static class Folder
        {
            private final String        name;

            private final List<Folder>  folder  = new ArrayList<Folder>();

            public Folder(String name)
            {
                this.name = name;
            }

            public String getName()
            {
                return name;
            }

            public void addFolder(Folder p)
            {
                this.folder.add(p);
            }

            public List<Folder> getFolders()
            {
                return folder;
            }
        }

我找到了一个办法。别担心,伙计们。如果你们能分享你们的解决方案就好了。@Karna检查添加的答案。@SusannBrunner这种方法也很好。我创建了一个具有自引用数组的类,并检查数组是否为null,然后检查叶,如果不是null,则检查非叶。
private static class Folder
        {
            private final String        name;

            private final List<Folder>  folder  = new ArrayList<Folder>();

            public Folder(String name)
            {
                this.name = name;
            }

            public String getName()
            {
                return name;
            }

            public void addFolder(Folder p)
            {
                this.folder.add(p);
            }

            public List<Folder> getFolders()
            {
                return folder;
            }
        }
        public boolean isLeaf(Object value)
        {
            if (value instanceof String || (value instanceof Folder && ((Folder) value).getFolders().isEmpty()))
            {
                return true;
            }
            return false;
        }