Android Studio switch statement on ImageView

15,234

why don't use the id of the View, which is already constant, instead of comparing the v itself?

switch (v.getId()) {
    case R.id.level001:
        level_selected = "level001";
         break;
    case R.id.level002:
         level_selected = "level002";
         break;
}
Share:
15,234
Charas
Author by

Charas

Updated on June 04, 2022

Comments

  • Charas
    Charas almost 2 years

    I am trying to use a switch statement on ImageView and assign a String value, so that in my onClick function, I can do some function depending on which ImageView is clicked and use the String value depending on the ImageView clicked. Sorry for the bad explanation, below is the code sample.

    ChooseLevelActivity.java

    public class ChooseLevelActivity extends Activity implements View.OnClickListener {
    
        ImageView level001, level002, level003, level004, level005;
        String level_selected;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.choose_level);
    
            level001 = (ImageView) findViewById(R.id.level001);
            level002 = (ImageView) findViewById(R.id.level002);
            level003 = (ImageView) findViewById(R.id.level003);
            level004 = (ImageView) findViewById(R.id.level004);
            level005 = (ImageView) findViewById(R.id.level005);
    
            // Array of ImageView
            final ImageView[] levelsArray = {level001, level002, level003, level004, level005};
    
            for(int i = 0; i < 5; i++) {
                levelsArray[i].setOnClickListener(this);
            }
        }
    
        @Override
        public void onClick(View v) {
    
            /* Switch statement to change the value of String level_selected
             * depending on which ImageView is clicked.
             * but an error "Constant expression required" shows up
             * What am I missing? How to use the switch on ImageView ?
             */
            switch (v) {
                case level001:
                    level_selected = "level001";
                    break;
                case level002:
                    level_selected = "level002";
                    break;
            }
    
            // Some function that uses the String level_selected
    
        }
    }