我正在寻找在应用程序中创建TreeView的对象,但无法使用循环创建Node对象。
我只想动态创建可以在TreeView中使用的对象名称。
这是我在应用程序中使用的库。 TreeView
(r ->)
我也尝试执行此操作,但我收到的错误是作用域中已声明“ node”变量。
for(int i = 0; i< arrId.size(); i++){
final Node i = new Node(getNodeText(i));
}
这是运行良好的静态代码。
for(int loopI = 0; loopI< arrId.size(); loopI++){
String node = "node"+arrId.get(loopI);
final Node node = new Node(getNodeText(loopI));
}
答案 0 :(得分:1)
也许您应该重写方法getNodeText()
,因为您想传递参数。或者只是不要传递诸如getNodeText(i)
之类的参数,因为此方法已经具有计数器。
private String getNodeText() {
return "Node " + nodeCount++;
}
答案 1 :(得分:0)
我的感觉是您应该在这里使用某种收藏。请考虑以下内容:
final List<Node> allNodes = new ArrayList<>();
for (int i=0; i < arrId.size(); i++) {
Node node = new Node(getNodeText(i));
allNodes.add(node);
}
然后,当您要构建树形视图时:
final Graph graph = new Graph();
graph.addEdge(node.get(0), node.get(1));
graph.addEdge(node.get(0), node.get(2));
graph.addEdge(node.get(0), node.get(3));
graph.addEdge(node.get(1), node.get(4));
graph.addEdge(node.get(1), node.get(5));
graph.addEdge(node.get(5), node.get(6));
graph.addEdge(node.get(5), node.get(7));
graph.addEdge(node.get(3), node.get(8));
graph.addEdge(node.get(3), node.get(9));
graph.addEdge(node.get(3), node.get(10));
graph.addEdge(node.get(10), node.get(11));
这里的想法是,您不应该自己尝试对变量进行编号。在大多数情况下,有此需要时,您应该使用集合。大多数列表实现都有一个内置计数器,可用于对元素进行编号。