В настоящее время у меня есть 8 кнопок изображения, настроенных с идентификатором imageButton1 в imageButton8.Android Studio: Итерация через изображения в drawable для onClick imageButton
Когда я нажимаю на определенную кнопку (например, imageButton2), я хочу прокрутить мои изображения в папке с рисунком с именем image1 .... image10 и установить изображение в файл изображения для каждого щелчка.
Я рассматривал различные циклы для решения этой проблемы, но там они никуда не вели. Вот фрагмент а при попытке петли:
ОБНОВЛЕНО 26/4/16
решаемые
//UPDATED 25/4/16
ImageButton btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8;
ImageButton[] btns;
int[] drawables = new int[]{R.drawable.image1,R.drawable.image2,R.drawable.image3,R.drawable.image4,R.drawable.image5,R.drawable.image6,R.drawable.image7,R.drawable.image8};
@Override
protected void onCreate(Bundle savedInstanceState) {
btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn2 = (ImageButton) findViewById(R.id.imageButton2);
btn3 = (ImageButton) findViewById(R.id.imageButton3);
btn4 = (ImageButton) findViewById(R.id.imageButton4);
btn5 = (ImageButton) findViewById(R.id.imageButton5);
btn6 = (ImageButton) findViewById(R.id.imageButton6);
btn7 = (ImageButton) findViewById(R.id.imageButton7);
btn8 = (ImageButton) findViewById(R.id.imageButton8);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
btn7.setOnClickListener(this);
btn8.setOnClickListener(this);
}
btns = new ImageButton[]{btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8};
}
int counter = 0;
@Override
public void onClick(View v)
{
counter ++;
for (int i = 0; i < btns.length; i++)
{
if (v.getId() == btns[i].getId())
{
if(counter ==8)
{
counter =0;
}
((ImageButton)v).setImageResource(drawables[counter]);
}
}
}
}
ОБНОВЛЕНО 26/4/16 решаемые
Еще одна попытка была создать счетчик, чтобы сохранить количество кликов и установить, если операторы изменяют изображения в соответствии с каждым щелчком.
Проблема здесь заключалась в создании большого количества кода, учитывая, что у меня есть несколько кнопок.
Кроме того, когда я запускаю это на двух разных кнопках, как только я нажимаю на imageButton1 несколько раз, то imageButton2 несколько раз, imageButton1 больше не отвечает.
int counter =0;
@Override
public void onClick(View v)
{
counter++;
switch(v.getId())
{
case R.id.imageButton1:
if(counter == 1){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image1);
break;
}else if (counter == 2){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image2);
break;
}else if (counter == 3){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image3);
break;
}else if (counter == 4){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image4);
break;
}else if (counter == 5){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image5);
break;
}else if (counter == 6){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image6);
break;
}else if (counter == 7){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image7);
break;
}else if (counter == 8){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image8);
break;
}else if (counter == 9){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image9);
break;
}else if (counter == 10) {
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image10);
counter = 0;
break;
}
break;
Я был бы признателен за любые рекомендации, между тем, если я разрешу эту проблему, я отправлю Редактировать. Приветствия
Я уже пробовал что-то подобное, но появляется ошибка. Не удается разрешить «setImageResource (int)». – Steven
обновил мой ответ , вы можете попробовать сейчас. – ank
Обновлен мой ответ с этим »((ImageButton) v) .setImageResource (drawables [i]);". Я думаю, что причина ошибки «Не удается решить» - это потому, что объект View не имеет этого. Поэтому нам может потребоваться передать его в ImageButton, чтобы получить метод. – ank