Hallo alle zusammen!
Die Überschrift ist ein wenig spärlich, deswegen hier mehr:
Ich habe eine Klasse namens TreeNode. Diese Klasse kann mehrere Kind-Nodes haben. Jeder Node kann aus- oder eingeklappt sein. Wenn ein Knoten "ausgeplappt" ist, dann sind seine Kinder zu sehen, wenn nicht, dann nicht hier mal ein Beispiel:
Dieses Beispiel erzeugte folgende Ausgabe:
Nun soll der Node noch eine methode besitzen, die mir den X-ten node in aktueller expand-konfiguration zurückgeben.
Also wenn ich im Beispiel oben eine 0 mit gebe soll, der root node zurückgegeben werden. wenn ich eine 5 mitgebe sollte mir das Child "Child 1-2-2" zurückgegeben werden, bei einer 8 "Child 2" usw.
Ich habe nun schon ein paar Stunden rumversucht und der Tag wird auch nicht jünger.
Hier meine Versuche:
Für Hilfe wäre ich sehr dankbar!
[Edit:]
Hab eine Lösung:
Die Überschrift ist ein wenig spärlich, deswegen hier mehr:
Ich habe eine Klasse namens TreeNode. Diese Klasse kann mehrere Kind-Nodes haben. Jeder Node kann aus- oder eingeklappt sein. Wenn ein Knoten "ausgeplappt" ist, dann sind seine Kinder zu sehen, wenn nicht, dann nicht hier mal ein Beispiel:
PHP:
StringNode node = new StringNode("root");
StringNode n1 = new StringNode("Child 1");
StringNode n11 = new StringNode("Child 1-1");
n11.add(new StringNode("Child 1-1-1"));
n11.add(new StringNode("Child 1-1-2"));
n11.add(new StringNode("Child 1-1-3"));
n11.add(new StringNode("Child 1-1-4"));
n11.add(new StringNode("Child 1-1-5"));
n11.add(new StringNode("Child 1-1-6"));
n11.add(new StringNode("Child 1-1-7"));
n11.add(new StringNode("Child 1-1-8"));
n11.add(new StringNode("Child 1-1-9"));
n11.add(new StringNode("Child 1-1-10"));
StringNode n12 = new StringNode("Child 1-2");
n12.add(new StringNode("Child 1-2-1"));
n12.add(new StringNode("Child 1-2-2"));
n12.add(new StringNode("Child 1-2-3"));
n12.add(new StringNode("Child 1-2-4"));
// n11.setExpanded(true);
n12.setExpanded(true);
n1.add(n11);
n1.add(n12);
n1.setExpanded(true);
StringNode n2 = new StringNode("Child 2");
node.add(n1);
node.add(n2);
node.setExpanded(true);
System.out.println(node.toString());
Dieses Beispiel erzeugte folgende Ausgabe:
Code:
root
Child 1
Child 1-1
Child 1-2
Child 1-2-1
Child 1-2-2
Child 1-2-3
Child 1-2-4
Child 2
Nun soll der Node noch eine methode besitzen, die mir den X-ten node in aktueller expand-konfiguration zurückgeben.
Also wenn ich im Beispiel oben eine 0 mit gebe soll, der root node zurückgegeben werden. wenn ich eine 5 mitgebe sollte mir das Child "Child 1-2-2" zurückgegeben werden, bei einer 8 "Child 2" usw.
Ich habe nun schon ein paar Stunden rumversucht und der Tag wird auch nicht jünger.
Hier meine Versuche:
PHP:
public TreeNode getNode(int idx) {
TreeNode n = null;
if (idx == 0) {
return this;
} else {
if (isExpanded()) {
// TreeNode lastNode = null;
for (TreeNode node : this) {
if ((n = node.getNode(--idx)) != null) {
return n;
}
// lastNode = node;
}
// if (null != lastNode) {
// idx -= lastNode.getActiveChildren();
// return getParent().getNode(idx);
// }
}
return null;
}
}
Für Hilfe wäre ich sehr dankbar!
[Edit:]
Hab eine Lösung:
PHP:
public TreeNode getNode(int idx) {
TreeNode n = null;
if (idx == 0) {
return this;
} else {
for(TreeNode node : this) {
int children = node.getActiveChildren();
if((idx - children) < 2) {
return node.getNode(idx-1);
} else {
idx-=(children+1);
}
}
return null;
}
}
Zuletzt bearbeitet: