使用arraylist中的Loop创建对象名称

时间:2018-12-23 14:47:18

标签: java android loops treeview

我正在寻找在应用程序中创建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));
        }

2 个答案:

答案 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));

这里的想法是,您不应该自己尝试对变量进行编号。在大多数情况下,有此需要时,您应该使用集合。大多数列表实现都有一个内置计数器,可用于对元素进行编号。