Java 使用循环处理棋盘游戏场?

Java 使用循环处理棋盘游戏场?,java,android,Java,Android,这是我的第一个问题。我正在Android上写一个简单的游戏,这是我的第一个。这是一个有64个字段的棋盘游戏。现在,每次单击一个字段时,都需要执行一些操作。我想出了一个这样做的方法: switch(v.getId()) { case R.id.field1: ... ... ... } 它正在工作,但对于64个字段来说有点烦人。我可以检索字段ID并在循环中执行吗 findViewById(R.id.field+i).doSomething(); 我知道不能这样做,我只想说明我的想法。以下内容将

这是我的第一个问题。我正在Android上写一个简单的游戏,这是我的第一个。这是一个有64个字段的棋盘游戏。现在,每次单击一个字段时,都需要执行一些操作。我想出了一个这样做的方法:

switch(v.getId()) {
case R.id.field1:
...
...
...
}
它正在工作,但对于64个字段来说有点烦人。我可以检索字段ID并在循环中执行吗

findViewById(R.id.field+i).doSomething();

我知道不能这样做,我只想说明我的想法。以下内容将在Javascipt中实现,但如何在Java中实现?有可能吗?

AFAIK在Eclipse中使用Android布局编辑器无法做到这一点。最简单的方法是以编程方式创建视图并将其存储在集合或数组中:

TextView[] fields = new TextView[64];
for (int i = 0; i < 64; i++) {
    TextView textView = new TextView(context);
    textView.setText("Programmatic TextView");
    parentLayout.addView(textView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    fields[i] = textView;
}

您可以在布局编辑器中创建parentLayout视图。

您已经拥有该视图,因此可以编写v.doSomething,还是我在这里遗漏了什么?Henry,问题是doSomething是我活动类的一个方法,v只是一个视图对象。还是我在这里遗漏了什么,可以通过某种方式解决findViewById返回一个视图,因此我认为doSomething是在视图上实现的。使用数组的想法似乎非常有趣。我会试试看,看看效果如何!谢谢:顺便说一句,谁能简单地向我解释一下上下文是什么?到目前为止,我只看到有人在那里写这篇文章。这有关系吗?怎么做?好吧,但是如何给特定字段提供ID呢?我有一个有64个字段的棋盘游戏,我用TableRows和LinearLayouts创建了它。现在,我想为每个LinearLayout指定一个字段和ID,以便在单击字段后可以执行一些操作。活动是上下文的实现,也可以使用parentLayout.getContext。如果需要,您可以使用textView.setId…设置您想要的任何ID。。。。但是,ID通常只在查找组件并将对组件的引用存储在变量中时有用。您已经在fields数组中使用了该字段,因此您不应该真正需要它们。