Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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
Java 如何实现ContentProvider的getParent方法_Java_Eclipse_Eclipse Plugin - Fatal编程技术网

Java 如何实现ContentProvider的getParent方法

Java 如何实现ContentProvider的getParent方法,java,eclipse,eclipse-plugin,Java,Eclipse,Eclipse Plugin,我有一个树选择对话框的内容提供者。我需要实现getParent方法,以便在选中某个节点时选择树的根。代码如下: @SuppressWarnings("unchecked") protected Node<T> getAdapter(Object element) { if(element instanceof Tree) return ((Tree<T>)element).getRootElement(); else ret

我有一个树选择对话框的内容提供者。我需要实现getParent方法,以便在选中某个节点时选择树的根。代码如下:

@SuppressWarnings("unchecked")
protected Node<T> getAdapter(Object element) {
    if(element instanceof Tree)
        return ((Tree<T>)element).getRootElement();
    else
        return (Node<T>)element;
}

@Override
public void dispose() {
    // TODO Auto-generated method stub

}

@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    // TODO Auto-generated method stub

}

@Override
public Object[] getElements(Object inputElement) {
    return getChildren(inputElement);
}

@Override
public Object[] getChildren(Object parentElement) {

    if(parentElement instanceof org.db.normalization.Table) {
        if(((org.db.normalization.Table)parentElement).getStatus() == Status.DELETED)
            return new Object[0];
        List<org.db.normalization.Attribute> atts =  new  ArrayList<org.db.normalization.Attribute>();

        for(Attribute a:((org.db.normalization.Table)parentElement).getAttributes().getAttributes())
            if(a.getStatus() != Status.UNMODIFIED)
                atts.add(a);


        for(Attribute a:((org.db.normalization.Table)parentElement).getPrimaryKey().getAttributes())
            if(a.getStatus() != Status.UNMODIFIED)
                atts.add(a);

        return atts.toArray();
    } else if (parentElement instanceof org.db.normalization.Attribute) { 
        return new Object[0];
    } else {
        @SuppressWarnings("unchecked")
        List<org.db.normalization.Table> n = (ArrayList<org.db.normalization.Table>)parentElement;
        if (n.size() > 0)  {

            return n.toArray() ;
        }
    }
    return new Object[0];
}

@Override
public Object getParent(Object element) {
    // TODO Auto-generated method stub

    return null;
}

@Override
public boolean hasChildren(Object element) {
    // TODO Auto-generated method stub
    return getChildren(element).length > 0;
}
@SuppressWarnings(“未选中”)
受保护的节点getAdapter(对象元素){
if(树的元素实例)
return((树)元素).getRootElement();
其他的
返回(节点)元素;
}
@凌驾
公共空间处置(){
//TODO自动生成的方法存根
}
@凌驾
public void inputChanged(查看器、对象oldInput、对象newInput){
//TODO自动生成的方法存根
}
@凌驾
公共对象[]getElements(对象inputElement){
返回getChildren(inputElement);
}
@凌驾
公共对象[]获取子对象(对象父元素){
if(parentElement instanceof org.db.normalization.Table){
if(((org.db.normalization.Table)parentElement).getStatus()==Status.DELETED)
返回新对象[0];
List atts=new ArrayList();
对于(属性a:((org.db.normalization.Table)parentElement).getAttributes().getAttributes())
if(a.getStatus()!=状态。未修改)
附件添加(a);
对于(属性a:((org.db.normalization.Table)parentElement).getPrimaryKey().getAttributes())
if(a.getStatus()!=状态。未修改)
附件添加(a);
返回atts.toArray();
}else if(parentElement instanceof org.db.normalization.Attribute){
返回新对象[0];
}否则{
@抑制警告(“未选中”)
列表n=(ArrayList)parentElement;
如果(n.size()>0){
返回n.toArray();
}
}
返回新对象[0];
}
@凌驾
公共对象getParent(对象元素){
//TODO自动生成的方法存根
返回null;
}
@凌驾
公共布尔hasChildren(对象元素){
//TODO自动生成的方法存根
返回getChildren(元素)。长度>0;
}
我真的不知道在getParent方法中要写什么,因为除了作为参数接收的元素之外,我没有其他信息,而这个元素本身并不知道它的父元素


谢谢

对于树实现的大多数实例,您确实知道自己的父级,因此父级要么由setter方法设置,要么在构造函数上设置。你不知道父节点是谁,所以你提出了更糟糕的情况,你基本上必须得到所有节点,并检查每个节点的子节点是否包含你。

不确定
org.db.normalization.Table
是什么,但如果这是
元素的类型,它“应该”有一个返回父节点的方法。如果不是,你就不走运了。