powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / пройти (некоторые) элементы Layout по циклу
7 сообщений из 7, страница 1 из 1
пройти (некоторые) элементы Layout по циклу
    #39221536
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, в программировании под Андроид опыта почти нет.
У меня в activity есть довольно много "залипающих" кнопок, ToggleButton (64 одинаковых, это для управления внешним устройством по ethernet). В OnCreate хочу "подвесить" всем этим кнопкам однотипный обработчик OnCheckedChangeListener. Если делать это для одной кнопки, то делал это вот так:
Код: java
1.
2.
ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton1);
        toggle.setOnCheckedChangeListener(...


Думаю сделать это в цикле для всех 64 кнопок. Названия у них: toggleButton1, ... toggleButton64. Но в findViewById передается id, а не название. Как думаете, как бы мне решить свою задачу? Есть способ по имени найти id View: Resources.getIdentifier, но пишут, что это не очень эффективно:
Note: use of this function is discouraged. It is much more efficient to retrieve resources by identifier than by name.
Может быть есть способ обойти дочерние элементы Layout в цикле? Или вообще подойти к проблеме с другой стороны.
Может кто-нибудь подсказать что-нибудь? )
...
Рейтинг: 0 / 0
пройти (некоторые) элементы Layout по циклу
    #39221579
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62Может кто-нибудь подсказать что-нибудь? )
https://github.com/excilys/androidannotations/wiki/ViewChangeEvents#checkedchange :)

Код: java
1.
2.
3.
4.
@CheckedChange
void helloCheckBoxCheckedChanged(CompoundButton hello) {
    // Something Here
}
...
Рейтинг: 0 / 0
пройти (некоторые) элементы Layout по циклу
    #39221649
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
спасибо, чуть глянул, потом посмотрю подробнее библиотеку.
...
Рейтинг: 0 / 0
пройти (некоторые) элементы Layout по циклу
    #39222311
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62Может быть есть способ обойти дочерние элементы Layout в цикле? Или вообще подойти к проблеме с другой стороны.
Может кто-нибудь подсказать что-нибудь? )

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  public void toggleButtonInit(final Context context, final View v) {
        try {
            if (v instanceof ViewGroup) {
                ViewGroup vg = (ViewGroup) v;
                for (int i = 0; i < vg.getChildCount(); i++) {
                    View child = vg.getChildAt(i);
                    toggleButtonInit(context, child);
                }
            } else {
                if (v instanceof ToggleButton )
                    ((ToggleButton ) v).setOnCheckedChangeListener(...);
              
            }

        } catch (Exception e) {
            // можно показать ошибку 
        }
    }
...
Рейтинг: 0 / 0
пройти (некоторые) элементы Layout по циклу
    #39222734
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джибс,
спасибо, я примерно так и сделал сегодня, через getChildAt, но более примитивно - без рекурсии, использовав то, что знаю конкретную структуру UI. Ваш способ универсальнее, сейчас попробую переписать. А вот пишут, что instanceof - медленный и можно использовать сравнение классов, я писал:
Код: java
1.
2.
View relt = tr.getChildAt(j);
if (relt.getClass() == ToggleButton.class)


Можете прокомментировать этот момент? (Хотя, кажется, что несколько десятков использований этого оператора скорее всего не должны реально давать заметного эффекта)
...
Рейтинг: 0 / 0
пройти (некоторые) элементы Layout по циклу
    #39222743
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62А вот пишут, что instanceof - медленный и можно использовать сравнение классов
Можно, если есть уверенность, что не попадутся наследники класса.
...
Рейтинг: 0 / 0
пройти (некоторые) элементы Layout по циклу
    #39223048
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по скорости вполне приемлимо, тормозорв не заметил.
я в принципе им пользовался, когда шрифты проставлял.
так что можно и сразу их втыкать, но лент было )
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / пройти (некоторые) элементы Layout по циклу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]