我正在开发一个显示元素列表的 GUI。
所有元素都在一个一维可迭代数组中,因此显示它们通常看起来像这样:
foreach (Element e: elements) {
display.Display(e);
}
我现在需要一种方法来组织树结构中的元素,如下例所示:
在我的系统中,“文件夹”元素和“文件”元素之间没有区别,但我可以访问元素的“深度”和“isExpanded”值。
如何确定是否应根据迭代先前元素的数据来显示元素?
我正在开发一个显示元素列表的 GUI。
所有元素都在一个一维可迭代数组中,因此显示它们通常看起来像这样:
foreach (Element e: elements) {
display.Display(e);
}
我现在需要一种方法来组织树结构中的元素,如下例所示:
在我的系统中,“文件夹”元素和“文件”元素之间没有区别,但我可以访问元素的“深度”和“isExpanded”值。
如何确定是否应根据迭代先前元素的数据来显示元素?
我想我已经弄清楚了,但是可能有些情况会搞砸:
bool prevIsCollapsed = false;
int collapsedPropertyDepth = 0;
// iterate through each property of this component
for (Property p : properties)
{
int depth = property.depth;
if (prevIsCollapsed && depth > collapsedPropertyDepth)
{
// dont display this property
continue;
}
if (!property.isExpanded)
{
prevIsCollapsed = true;
collapsedPropertyDepth = depth;
}
else
{
prevIsCollapsed = false;
}
}