I have defined the TextView array as final. And I set a OnClickListener() for all the array elements, and I am able to use setBackground (even the array is not set as final). But I cannot use getText() method which return NullPointerException during operation.
Do you guys know why is the problem existed?
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);
}
};
The TextView is defined something like this:
<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" />
i tested your code its working fine. just change it.
Toast.makeText(getApplicationContext(), ((TextView)v).getText().toString(), Toast.LENGTH_SHORT).show();
this is full code
seats.add((TextView) findViewById(R.id.textView2));
seats.add((TextView) findViewById(R.id.textView3));
seats.add((TextView) findViewById(R.id.textView4));
OnClickListener seatClick = new OnClickListener()
{
@Override
public void onClick(View v)
{
v.setBackgroundColor(-16711681);
Toast.makeText(getApplicationContext(), ((TextView)v).getText().toString(), Toast.LENGTH_SHORT).show();
}
};
for (int i = 0; i<seats.size(); i++)
seats.get(i).setOnClickListener(seatClick);