Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.71
андреич
1 / 1 / 0
Регистрация: 31.07.2010
Сообщений: 36
#1

Обработка событий для массива кнопок - Программирование Android

03.03.2012, 22:35. Просмотров 3000. Ответов 4
Метки нет (Все метки)

Здравствуйте. У меня в программе создается массив из N ImageButton.
и для каждой кнопки нужно обработать событие нажатия.
Java
1
2
3
4
5
6
7
8
9
10
 
//это создание и инициализация массива кнопок
 
                 caseLevel = new ImageButton[numLevel];     
          for(int i=0;i<numLevel;i++)
          {           
              caseLevel[i] = new ImageButton(this);           
              caseLevel[i].setBackgroundResource(id[i]);              
              caseLevel[i].setOnClickListener(this);
          }
подскажите как обработать событие нажатия на i-ю кнопку?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2012, 22:35     Обработка событий для массива кнопок
Посмотрите здесь:
Android Обработка событий
Android Обработка событий в ExpandableListView
Обработка событий в Service Android
Android Обработка событий + прорисовка
Обработка нажатия кнопок Android
Android Обработка нажатия кнопок
Android Обработка событий дочерним и родительским элементами
Обработка событий при работе с sqlite Android
Обработка нажатий кнопок созданных программно в заданном месте разметки Android
Обработчик событий для ImageButton Android
Календарь событий для кафе на android Android
Обработчик событий для динамического Button Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bes-s
30 / 30 / 2
Регистрация: 05.11.2011
Сообщений: 178
04.03.2012, 00:24     Обработка событий для массива кнопок #2
на днях столкнулсо с такой же проблеммой.
1. массив должен бытьглобальным
2. у каждой кнопки - свой уникальный ID
3. считываем ID нажатой кнопки - и вуаля! обрабатываем событие по отношению к нужной кнопке
андреич
1 / 1 / 0
Регистрация: 31.07.2010
Сообщений: 36
04.03.2012, 09:56  [ТС]     Обработка событий для массива кнопок #3
Цитата Сообщение от Bes-s Посмотреть сообщение
на днях столкнулсо с такой же проблеммой.
1. массив должен бытьглобальным
2. у каждой кнопки - свой уникальный ID
3. считываем ID нажатой кнопки - и вуаля! обрабатываем событие по отношению к нужной кнопке
массив и так глобальный, про ID я знаю, но когда пишу обработчик событий

Java
1
2
3
4
5
6
7
void onClick(View v)
{
   switch(v.getId())
   {
      case caseLevel[0].getId():  <= в этом месте он мне кричит, что выражение должно быть константой
   }
}
собственно поэтому я и в замешательстве сейчас
Bes-s
30 / 30 / 2
Регистрация: 05.11.2011
Сообщений: 178
04.03.2012, 13:54     Обработка событий для массива кнопок #4
мне про константу кричало, пока массив кнопок был объявлен в функции а не в классе. объявил в классе - все заработало.
и еще у меня обработчик события в OnClickListener сидит...
андреич
1 / 1 / 0
Регистрация: 31.07.2010
Сообщений: 36
04.03.2012, 15:01  [ТС]     Обработка событий для массива кнопок #5
я обработал вот таким образом
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
caseLevel[i].setOnClickListener(new OnClickListener(){
   public void onClick(View v) 
   {
      for(int i=0;i<numLevel;i++)
      {
         if(v.getId()==caseLevel[i].getId())
         {
            caseLevel[onClick].setImageResource(id[onClick]);
            onClick = i;
            caseLevel[i].setImageResource(idC[i]);
            break;
         }
      }
   }
});
однако, он срабатывает только на первую кнопку, на какую бы я не нажал

Добавлено через 6 минут
вопрос решен, нужно было просто еще задать id для каждой кнопки:
Java
1
caseLevel[i].setId(i);
Yandex
Объявления
04.03.2012, 15:01     Обработка событий для массива кнопок
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru