Ginu Jacob
Ginu Jacob

Reputation: 1818

Same button multiple click

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

Answers (6)

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

user3307005
user3307005

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

Eoin
Eoin

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

Seshu Vinay
Seshu Vinay

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

Tim
Tim

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

Moubeen Farooq Khan
Moubeen Farooq Khan

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

Related Questions