Reputation: 1818
The idea is the button may do one thing the on the first click and a different thing on the second click.
button_food = (Button) findViewById(R.id.foodicon_layout);
button_travel = (Button) findViewById(R.id.travelicon_layout);
button_fuel = (Button) findViewById(R.id.fuelicon_layout);
button_fetch = (Button) findViewById(R.id.fetchicon_layout);
button_travel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
button_food.setVisibility(View.GONE);
button_fuel.setVisibility(View.GONE);
button_fetch.setVisibility(View.GONE);
}
});
In the given example when button_travel is clicked the other buttons are made invisible. on clicking the same again i want the other buttons to become visible again.
Upvotes: 3
Views: 764
Reputation: 39
I think this is a cleanest way:
button_food = (Button) findViewById(R.id.foodicon_layout);
button_travel = (Button) findViewById(R.id.travelicon_layout);
button_fuel = (Button) findViewById(R.id.fuelicon_layout);
button_fetch = (Button) findViewById(R.id.fetchicon_layout);
private boolean visible;
button_travel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(visible){
visible=false;
button_food.setVisibility(View.GONE);
button_fuel.setVisibility(View.GONE);
button_fetch.setVisibility(View.GONE);
}else{
visible=true;
button_food.setVisibility(View.VISIBLE);
button_fuel.setVisibility(View.VISIBLE);
button_fetch.setVisibility(View.VISIBLE);
}
}
});
Upvotes: 1
Reputation: 216
If u use to array i think it is be too simple
Button btnArray[] = new Button[4];
btnArray[0] = (Button) findViewById(R.id.button_food);
btnArray[1] = (Button) findViewById(R.id.button_travel);
btnArray[2] = (Button) findViewById(R.id.button_fuel);
btnArray[3] = (Button) findViewById(R.id.button_fetch);
View.OnClickListener btnListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < btnArray.length; i++) {
if (btnArray[i].getId() != v.getId())
if (btnArray[i].getVisibility() == View.GONE)
btnArray[i].setVisibility(View.VISIBLE);
else
btnArray[i].setVisibility(View.GONE);
}
}
};
for (int i = 0; i < btnArray.length; i++)
btnArray[i].setOnClickListener(btnListener);
Upvotes: 1
Reputation: 4066
You can make the button set their visibility by getting their current visibility and switching it.
button_food = (Button) findViewById(R.id.foodicon_layout);
button_travel = (Button) findViewById(R.id.travelicon_layout);
button_fuel = (Button) findViewById(R.id.fuelicon_layout);
button_fetch = (Button) findViewById(R.id.fetchicon_layout);
button_travel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int visibility = button_food.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE;
// Perform action on click
button_food.setVisibility(visibility);
button_fuel.setVisibility(visibility);
button_fetch.setVisibility(visibility);
}
});
Writing it like this is just a simple way of writing an if statement
int visibility;
if(button_food.getVisibility() == View.VISIBLE){
visibility = View.GONE;
} else {
visibility = View.VISIBLE;
}
Upvotes: 7
Reputation: 13588
Are you looking for this?:
public void onClick(View v) {
if(visible){
visible=false;
button_food.setVisibility(View.GONE);
button_fuel.setVisibility(View.GONE);
button_fetch.setVisibility(View.GONE);
}else{
visible=true;
button_food.setVisibility(View.VISIBLE);
button_fuel.setVisibility(View.VISIBLE);
button_fetch.setVisibility(View.VISIBLE);
}
}
Upvotes: 3
Reputation: 43394
Just check the current state and act accordingly
public void onClick(View v) {
// Perform action on click
if (button_food.getVisibility() == View.VISIBLE) {
button_food.setVisibility(View.GONE);
} else {
button_food.setVisibility(View.VISIBLE
}
if (button_fuel.getVisibility() == View.VISIBLE) {
button_fuel.setVisibility(View.GONE);
} else {
button_fuel.setVisibility(View.VISIBLE
}
if (button_fetch.getVisibility() == View.VISIBLE) {
button_fetch.setVisibility(View.GONE);
} else {
button_fetch.setVisibility(View.VISIBLE
}
}
Upvotes: 5
Reputation: 2883
what you can do is to check their visiblity if they are visible the set visiblity to gone else set the visisiblity to Visible for reference have a look at below code
if (button_food.getVisibility()==View.VISIBLE) {
button_food.setVisibility(View.GONE);
} else {
button_food.setVisibility(View.VISIBLE);
}
if (button_fuel.getVisibility()==View.VISIBLE) {
button_fuel.setVisibility(View.GONE);
} else {
button_fuel.setVisibility(View.VISIBLE);
}
if (button_fetch.getVisibility()==View.VISIBLE) {
button_fetch.setVisibility(View.GONE);
} else {
button_fetch.setVisibility(View.VISIBLE);
}
Upvotes: 2