I am working on a ANDROID project and in it I have multiple buttons.
REQUIREMENT:-
1.When I click on a button once I want it to change to green color and when I click on same button again I want it to change back to original color .
2.When a button is selected(ie color becomes GREEN) I want to add a number to a array list and when I select it once again I want to remove the added number from the list.
I have come up with this solution as of now. But it doesn't work.
int flag=1;
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
flag+=1;
if(flag%2==0) {
SeatArrayList.remove(Integer.valueOf(1));
button1.setBackgroundColor(Color.GREEN);
}
else{
SeatArrayList.add(1);
button1.setBackgroundColor(bg_yellow);
}
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
flag+=1;
if(flag%2==0) {
SeatArrayList.remove(Integer.valueOf(3));
button3.setBackgroundColor(Color.GREEN);
}
else{
SeatArrayList.add(3);
button3.setBackgroundColor(bg_yellow);
}
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
flag+=1;
if(flag%2==0) {
SeatArrayList.remove(Integer.valueOf(4));
button4.setBackgroundColor(Color.GREEN);
}
else{
SeatArrayList.add(4);
button4.setBackgroundColor(bg_yellow);
}
}
});
You can easily manage this by using the boolean flag, here is one example for the same!
boolean isGreen = false;
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(isGreen){
isGreen = false
SeatArrayList.removeAt(SeatArrayList.size-1)
button1.setBackgroundColor(Color.YELLOW);
}else{
isGreen = true
SeatArrayList.add(1);
button1.setBackgroundColor(Color.GREEN);
}
}
});
You should create a flag for each button. I think that the following code does what you mention in the requirements:
1. XML File:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@android:color/black" android:text="Button 1"> </Button> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@android:color/black" android:text="Button 2"> </Button> <Button android:id="@+id/btn3" android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@android:color/black" android:text="Button 3"> </Button> <TextView android:id="@+id/txtNumbers" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="{ }" android:textSize="18sp"> </TextView> </LinearLayout>
2. MainActivity Java File:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn1, btn2, btn3;
private TextView txtNumbers;
private ArrayList<Integer> list;
private ArrayList<Boolean> isGreen;
private int initialColor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
btn3 = (Button) findViewById(R.id.btn3);
txtNumbers = (TextView) findViewById(R.id.txtNumbers);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
list = new ArrayList<>();
isGreen = new ArrayList<>(Collections.nCopies(3, false));//Initialize values to false (In this case for only 3 buttons)
initialColor = Color.BLACK;//The same color as in the XML file
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn1:
requirement(btn1, 0, 0);
break;
case R.id.btn2:
requirement(btn2, 1, 1);
break;
case R.id.btn3:
requirement(btn3, 2, 2);
break;
}
}
private void requirement(Button btn, int index, int number) {
if (!isGreen.get(index)) {
btn.setBackgroundColor(Color.GREEN);
list.add(number);
printList();
isGreen.set(index, true);
} else {
btn.setBackgroundColor(initialColor);
list.remove((Integer) number);//Cast to Integer, because this will eliminate the number by its value, not index
printList();
isGreen.set(index, false);
}
}
private void printList() {
String numbers = "{ ";
for (int index = 0; index < list.size(); index++) {
numbers += list.get(index) + ", ";
}
numbers += " }";
txtNumbers.setText(numbers);
}
}
Result:
I hope it will be useful to you. I stay tuned, regards 😁/.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.