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

Setonclicklistner для множества обьектов - Android

Восстановить пароль Регистрация
 
Dimitrii
1 / 1 / 0
Регистрация: 20.04.2013
Сообщений: 170
02.05.2016, 11:49     Setonclicklistner для множества обьектов #1
у меня есть 16 кнопок
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  ColorButton1=(Button)findViewById(R.id.button00);
        ColorButton2=(Button)findViewById(R.id.button01);
        ColorButton3=(Button)findViewById(R.id.button02);
        ColorButton4=(Button)findViewById(R.id.button03);
        ColorButton5=(Button)findViewById(R.id.button10);
        ColorButton6=(Button)findViewById(R.id.button11);
        ColorButton7=(Button)findViewById(R.id.button12);
        ColorButton8=(Button)findViewById(R.id.button13);
        ColorButton9=(Button)findViewById(R.id.button20);
        ColorButton10=(Button)findViewById(R.id.button21);
        ColorButton11=(Button)findViewById(R.id.button22);
        ColorButton12=(Button)findViewById(R.id.button23);
        ColorButton13=(Button)findViewById(R.id.button30);
        ColorButton14=(Button)findViewById(R.id.button31);
        ColorButton15=(Button)findViewById(R.id.button32);
        ColorButton16=(Button)findViewById(R.id.button33);
ButtonsArray=new Button[][]
 {{ColorButton1,ColorButton2,ColorButton3,ColorButton4},
        {ColorButton5,ColorButton6,ColorButton7,ColorButton8},
        {ColorButton9,ColorButton10,ColorButton11,ColorButton12},
        {ColorButton13,ColorButton14,ColorButton15,ColorButton16}};
 ColorButton1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
 
                ColorButton1.setBackgroundColor(getResources().getColor(R.color.second));
            }
        });
........................
собственно вопрос в следующем. Для всех кнопок метод при нажатии будет одинаковый, меняет изображение этой кнопки, но не суть. Суть в том, как можно все это красивей организовать, чтоб не писать 16-setOnClickListener. А то в дальнейшем, скорей всего число кнопок(поле) увеличиться и я понимаю что это будет очень ...некрасиво,мягко говоря тупо копировать их меняя просто идентификаторы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2016, 11:49     Setonclicklistner для множества обьектов
Посмотрите здесь:

Android ArrayList из обьектов класса
Android Динамическое создание динамических обьектов
Android Выбор array из их множества
Хранение обьектов в SQLite Android
Android как множества организоваться для игры на джава?
Android Поворот экрана и пересоздание обьектов. Как делают матёрые разработчики?
Android Настройка множества будильников

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
02.05.2016, 11:59     Setonclicklistner для множества обьектов #2
Напишите метод с обработчиком, получающим id нажатой кнопки
SergioO
 Аватар для SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
02.05.2016, 11:59     Setonclicklistner для множества обьектов #3
https://www.youtube.com/watch?v=pWbV...TNKkx4v9ePllNK
Dimitrii
1 / 1 / 0
Регистрация: 20.04.2013
Сообщений: 170
02.05.2016, 15:24  [ТС]     Setonclicklistner для множества обьектов #4
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
  for(int i=0;i<4;i++) {
 
           for(int j=0;j<4;j++) {
               ButtonsArray[i][0].setOnClickListener(new View.OnClickListener() {
                   public void onClick(View v) {
 
                       lightsArray[i][j] = ChangeColorID(lightsArray[i][j]);
                       SetColours();
 
                   }
               });
           }
       }
сделал вот так, но оно ругаеться на переменные. требует чтоб были final, но тогда их нельзя изменить
Паблито
не спать!
1870 / 1604 / 493
Регистрация: 12.05.2014
Сообщений: 5,806
Завершенные тесты: 1
02.05.2016, 15:31     Setonclicklistner для множества обьектов #5
Java
1
2
3
4
5
6
7
    private final View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Button btn = (Button) v;
            btn.setBackgroundColor(getResources().getColor(R.color.second));
        }
    };
и вешаешь в цикле этот слушатель на все кнопки
Dimitrii
1 / 1 / 0
Регистрация: 20.04.2013
Сообщений: 170
02.05.2016, 18:00  [ТС]     Setonclicklistner для множества обьектов #6
Спасибо. А не подскажете ли еще, есть простой способ получить i &j то есть какая из кнопок нажата?
Java
1
2
3
4
5
6
7
8
9
10
11
for (int i=0;i<4;i++)
{
    for (int j=0;j<4;j++)
    {
        ButtonsArray[i][j].setOnClickListener(listener);
 
 
    }
 
 
}
Yandex
Объявления
02.05.2016, 18:00     Setonclicklistner для множества обьектов
Ответ Создать тему
Опции темы

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