I can not implement this solution:

public class MainActivity extends AppCompatActivity { private Button myButton; private ImageView adolf; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myButton = (Button) findViewById(R.id.my_button); myButton.setAllCaps(false); adolf = (ImageView) findViewById(R.id.image); adolf.setImageResource(R.drawable.gray_100px); View.OnClickListener myClick = new View.OnClickListener() { @Override public void onClick(View view) { switch (/*Вот! Здесь нужно как-то прописать содержимое экземпляра*/) { case white_100px: adolf.setImageResource(R.drawable.gray_100px); break; case gray_100px: adolf.setImageResource(R.drawable.white_100px); break; } } }; myButton.setOnClickListener(myClick); } } 

I understand that it is possible to override the equels and getHash methods, but in the context of Android, I won’t figure out something. Help a beginner Android'ologu!

    3 answers 3

    Set a variable of type boolean flag = false and write it in onClick

     adolf.setImageResource(flag ? R.drawable.gray_100px : R.drawable.white_100px); flag = !flag; 

      switch is not really needed here:

       boolean isWhite = false; protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myButton = (Button) findViewById(R.id.my_button); adolf = (ImageView) findViewById(R.id.image); myButton.setAllCaps(false); myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { toggleImage(); } }); updateImage(); } private void toggleImage() { isWhite = !isWhite; updateImage(); } private void updateImage() { if (isWhite) { adolf.setImageResource(R.drawable.white_100px); } else { adolf.setImageResource(R.drawable.gray_100px); } } 

        You cannot get the resource ID assigned as an image for the ImageView . You need to do otherwise - store in the variable variable the value starting from which and assign a new picture. For example, you can store an ID in a variable like this:

         public class MainActivity extends AppCompatActivity { private Button myButton; private ImageView adolf; private int imageId; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myButton = (Button) findViewById(R.id.my_button); myButton.setAllCaps(false); adolf = (ImageView) findViewById(R.id.image); setImage(R.drawable.gray_100px); View.OnClickListener myClick = new View.OnClickListener() { @Override public void onClick(View view) { switch (imageId) { case white_100px: adolf.setImageResource(R.drawable.gray_100px); break; case gray_100px: adolf.setImageResource(R.drawable.white_100px); break; } } }; myButton.setOnClickListener(myClick); } private void setImage(int id){ adolf.setImageResource(id); imageId = id; } }