Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Dimitrii
1 / 1 / 0
Регистрация: 20.04.2013
Сообщений: 191
#1

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

02.05.2016, 11:49. Просмотров 169. Ответов 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
Ответы с готовыми решениями:

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

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

ArrayList из обьектов класса
public class Droid { public Bitmap bmp; int xSpeed = 1 ; int...

Динамическое создание динамических обьектов
Пишу игру. Есть уровни. В каждом уровне заданное количество...

Поворот экрана и пересоздание обьектов. Как делают матёрые разработчики?
Разрабатываю приложение, решил делать одно активити и FrameLayout в нем, куда...

5
Alexvp
111 / 75 / 8
Регистрация: 03.08.2014
Сообщений: 390
02.05.2016, 11:59 #2
Напишите метод с обработчиком, получающим id нажатой кнопки
0
SergioO
168 / 184 / 90
Регистрация: 13.12.2015
Сообщений: 995
02.05.2016, 11:59 #3
https://www.youtube.com/watch?v=pWbV...TNKkx4v9ePllNK
0
Dimitrii
1 / 1 / 0
Регистрация: 20.04.2013
Сообщений: 191
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
2711 / 2157 / 732
Регистрация: 12.05.2014
Сообщений: 7,522
Завершенные тесты: 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
Сообщений: 191
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
02.05.2016, 18:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2016, 18:00

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

Цикл для обьектов
Здрасти. У меня есть много обьектов класса przedmiot. Какой цикл может в...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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