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

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

Войти
Регистрация
Восстановить пароль
 
Dimitrii
1 / 1 / 0
Регистрация: 20.04.2013
Сообщений: 185
#1

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

02.05.2016, 11:49. Просмотров 143. Ответов 5
Метки нет (Все метки)

у меня есть 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. А то в дальнейшем, скорей всего число кнопок(поле) увеличиться и я понимаю что это будет очень ...некрасиво,мягко говоря тупо копировать их меняя просто идентификаторы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2016, 11:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Setonclicklistner для множества обьектов (Программирование Android):

как множества организоваться для игры на джава? - Программирование Android
как множества организоваться для игры на джава?

ArrayList из обьектов класса - Программирование Android
public class Droid { public Bitmap bmp; int xSpeed = 1 ; int ySpeed = 1 ; int y = 0; int x = 0; int a = 32;...

Хранение обьектов в SQLite - Программирование Android
У меня есть класс Document который содержит следующие поля - Номер: строка, Дата: дата, Пользователь: строка, Сумма: вещественное, Валюта:...

Динамическое создание динамических обьектов - Программирование Android
Пишу игру. Есть уровни. В каждом уровне заданное количество обьектов-соперников. Есть класс Соперник, который содержит функции...

Поворот экрана и пересоздание обьектов. Как делают матёрые разработчики? - Программирование Android
Разрабатываю приложение, решил делать одно активити и FrameLayout в нем, куда будут помещаться фрагменты (настройки, диалоги и т.д.). Все...

Разработка мобильного приложения на ОС Андроид с функцией определения местоположения обьектов - Программирование Android
Ребята , доброго времени суток, долго мучался с определением темы на диплом в университете.В ключевом итоге остановился на...

5
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
02.05.2016, 11:59 #2
Напишите метод с обработчиком, получающим id нажатой кнопки
0
SergioO
95 / 184 / 63
Регистрация: 13.12.2015
Сообщений: 999
02.05.2016, 11:59 #3
https://www.youtube.com/watch?v=pWbV...TNKkx4v9ePllNK
0
Dimitrii
1 / 1 / 0
Регистрация: 20.04.2013
Сообщений: 185
02.05.2016, 15:24  [ТС] #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, но тогда их нельзя изменить
0
Pablito
2476 / 1960 / 611
Регистрация: 12.05.2014
Сообщений: 6,864
Завершенные тесты: 1
02.05.2016, 15:31 #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));
        }
    };
и вешаешь в цикле этот слушатель на все кнопки
1
Dimitrii
1 / 1 / 0
Регистрация: 20.04.2013
Сообщений: 185
02.05.2016, 18:00  [ТС] #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);
 
 
    }
 
 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2016, 18:00
Привет! Вот еще темы с ответами:

Цикл для обьектов - C++
Здрасти. У меня есть много обьектов класса przedmiot. Какой цикл может в main.cpp помочь исполнить функцию выписывания &quot;p_wypisz&quot; для всех...

Сформировать множества А и В по заданному числу элементов для каждого множества - Pascal
2)Сформировать множества А и В, базовый тип которых -70..30, по заданному числу элементов для каждого множества. Найти наибольший элемент,...

Одно событие для многих обьектов - C++ Builder
Как можно сделать одно событие для многих обьектов тима image.мне нужно чтобы если image отпустили в определенном участке формы происходило...

Создание собственных методов для встроенных обьектов - JavaScript
У всех встроенных объектов JavaScript есть свои свойства и методы. Например, у объекта Array есть свойство length, указывающее, сколько в...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
02.05.2016, 18:00
Ответ Создать тему
Опции темы

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