我有一个for
循环,用于创建具有相同文本值的ButtonFields。我想从每个按钮中获取一个不同的事件,它告诉我for
循环的哪个索引创建了按钮。我不想为每个ButtonField创建一个匿名类。
答案 0 :(得分:3)
如果他们逐个进行(我假设您的帖子),您可以记住fieldChanged
方法中第一个使用下一个代码的索引:
if (field instanceof ButtonField) {
int buttonIndex = field.getManager().getFieldIndex(field) - zeroButtonInex;
}
不要忘记为每个按钮分配FieldChangeListener
。
或者确定你可以从ButtonField
(可以通过匿名)创建你的新课程,你可以在那里保存索引并获得它。
答案 1 :(得分:3)
您已将按钮添加到阵列。我会给你一个尝试的想法:
private ButtonField buttonsObj[];
在for
循环之前的代码中,您知道按钮的数量,因此您可以初始化数组长度。
int size = 10;
buttonsObj = new ButtonFields[size];
for(int i = 0; i < size; i++)
{
buttonsObj[i] = new ButtonFields["btn"];
buttonsObj[i].setChangeListener(this);
add(buttonsObj[i]);
}
public void fieldChanged(Field field, int context) {
for(int i=0;i<size;i++) {
if(field == buttonsObj[i]) {
// you can trigger your event
}
}
}