我有以下模型,它使元素成为其后面元素的父元素。 例如,我从数组数组中的服务器获取数据,如下所示:
net Person age
net Person height
net Address streetname
org Company name
org Company location
com School color
com School number
请在昨天阅读下面的链接,查看模型类和结构。我在这个链接中提出的问题不是我现在想要的。我只是想让你看到数据模型和结构。
我的问题现在是
我想从模型中创建一个表,但我发现很难实现内容和标签提供程序。所以我在问我怎么做。 每列将包含前一列的子项等。
感谢您的帮助。
我在内容提供商中试过这个,但它不起作用:
public Object[] getElements(Object parentElement) {
if(parentElement instanceof cPackage) {
cPackage pack = (cPackage)parentElement;
return pack.getChildren().toArray();
}else if(parentElement instanceof cClass) {
cClass klas = (cClass)parentElement;
return klas.getChildren().toArray();
}else if(parentElement instanceof cMethod) {
cMethod met = (cMethod)parentElement;
return met.getChildren().toArray();
}
return EMPTY_ARRAY;
}
感谢您的帮助。
答案 0 :(得分:1)
如果“不工作”意味着它总是返回EMPTY_ARRAY
,那么我怀疑parentElement
不是您认为的那样。尝试添加
System.out.println(parentElement.getClass().getSimpleName());
在方法的顶部,看看你得到了什么。
在旁注中,由于cPackage
,cClass
和cMethod
都实现getChildren()
,因此您实际上并不需要所有if语句 - 只需
if (parentElement instanceof Model) {
return ((Model)parentElement).getChildren().toArray();
}
应该这样做。实际上,如果您希望只传入Model
个子类,您也可以省略if
语句,但您可能需要检查null
。