new View.OnClickListener() {
@Override
public void onClick(View v) {
((TextView) findViewById(testTextArray[counter])).setText("Hi!");
}
onClick 函数内的代码在单击按钮时运行。它不记得循环的每次迭代期间变量的值,只是因为它在不同的范围内。
更新
以下代码仅使用一个 OnClickListener 来增加或减少每个对应 TextView 的值。您应该能够轻松地将其调整为具有更好看的布局的布局充气机。
public class Example extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
OnClickListener listener = new OnClickListener() {
public void onClick(View view) {
TextView text = (TextView) view.getTag();
if(((Button) view).getText().equals("+"))
text.setText(Integer.parseInt(text.getText().toString()) + 1 + "");
else
text.setText(Integer.parseInt(text.getText().toString()) - 1 + "");
}
};
for(int i = 0; i < 5; i++) {
LinearLayout line = new LinearLayout(this);
line.setOrientation(LinearLayout.HORIZONTAL);
TextView text = new TextView(this);
text.setText(i + "");
line.addView(text);
Button plus = new Button(this);
plus.setTag(text);
plus.setText("+");
plus.setOnClickListener(listener);
line.addView(plus);
Button minus = new Button(this);
minus.setTag(text);
minus.setText("-");
minus.setOnClickListener(listener);
line.addView(minus);
layout.addView(line);
}
setContentView(layout);
}
}
评论中的补充
我将假设在你的 newplayerlayout.xml 中有两个按钮(id 为“plus”和“minus”)和一个 TextView(id 为“text”)。也许你会像这样实现这个方案:
OnClickListener mListener = new OnClickListener() {
public void onClick(View view) {
TextView text = (TextView) view.getTag();
if(((Button) view).getText().equals("+"))
text.setText(Integer.parseInt(text.getText().toString()) + 1 + "");
else
text.setText(Integer.parseInt(text.getText().toString()) - 1 + "");
}
};
...
while (counter < 5) {
inflaterLayout = LayoutInflater.from(getBaseContext()).inflate(R.layout.newplayerlayout, null);
myLayout.addView(inflaterLayout);
TextView inflatedText = (TextView) inflaterLayout.findViewById(R.id.text);
Button testButton = (Button) inflaterLayout.findViewById(R.id.plus);
testButton.setTag(inflatedText);
testButton.setText("+");
testButton.setOnClickListener(mListener);
testButton = (Button) inflaterLayout.findViewById(R.id.minus);
testButton.setTag(inflatedText);
testButton.setText("-");
testButton.setOnClickListener(mListener);
counter++;
}