new View.OnClickListener() {
@Override
public void onClick(View v) {
((TextView) findViewById(testTextArray[counter])).setText("Hi!");
}
ボタンがクリックされると、onClick 関数内のコードが実行されます。スコープが異なるため、ループの各反復中に変数の値を覚えていません。
アップデート
次のコードでは、1 つの 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 に 2 つのボタン (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++;
}