TextView 配列を final として定義しました。そして、すべての配列要素に OnClickListener() を設定し、setBackground を使用できます (配列が最終として設定されていなくても)。しかし、操作中に NullPointerException を返す getText() メソッドは使用できません。
なぜ問題が存在するのか知っていますか?
final ArrayList<TextView> seats = new ArrayList<TextView>();
@Override
public void onCreate(Bundle savedInstanceState) {
.
.
seats.add((TextView) findViewById(R.id.A1));
seats.add((TextView) findViewById(R.id.A2));
seats.add((TextView) findViewById(R.id.A3));
.
.
for (int i = 0; i<seats.size(); i++)
seats.get(i).setOnClickListener(seatClick);
.
.
}
OnClickListener seatClick = new OnClickListener()
{
@Override
public void onClick(View v)
{
v.setBackgroundColor(-16711681);
Toast.makeText(getApplicationContext(), ((TextView)v).getText().toString(), Toast.LENGTH_SHORT);
}
};
TextView は次のように定義されています。
<TextView
android:id="@+id/A1"
android:background="#0AFC1A"
android:textColor="#FFFFFF"
android:layout_width="30dp"
android:layout_height="30dp"
android:gravity="center"
android:text="A1" />