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

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

Войти
Регистрация
Восстановить пароль
 
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 523
#1

Обработчик нажатия для вложенных лайаутов - Программирование Android

04.08.2016, 00:09. Просмотров 184. Ответов 7
Метки нет (Все метки)

Здравствуйте!
Подскажите как определить какая кнопка вызвала OnClick, если кнопки находятся во вложенных однотипных layout-ах и соответственно их ID совпадают.


Java
1
2
3
4
5
6
7
8
9
10
11
   public void onClick(View v){
        
        int BtId = v.getId();           
        if (BtId == Check1_id){
            if (D17) Log.d(TAG, "Check1_id id = " + BtId);
            bCheck1 = true;
        }else if (BtId == Check2_id){
            if (D17) Log.d(TAG, "Check2_id id = " + BtId);
            bCheck2 = true;
        }
}

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            View temp = (View) DialogLayout.findViewById(R.id.Line_0);
                DialogText[i][ViewParam.NAME] = (TextView) (temp.findViewById(R.id.textViewCheckText));
                DialogText[i][ViewParam.COUNT] = (TextView) (temp.findViewById(R.id.textViewCheckCount));
                if (D17) Log.v(TAG, "-- " + temp.getId() + " " + DialogText[i][ViewParam.COUNT]..getId());
                i++;
            temp = (View) DialogLayout.findViewById(R.id.Line_1);
                DialogText[i][ViewParam.NAME] = (TextView) (temp.findViewById(R.id.textViewCheckText));
                DialogText[i][ViewParam.COUNT] = (TextView) (temp.findViewById(R.id.textViewCheckCount));
                if (D17) Log.v(TAG, "-- " + temp.getId() + " " + DialogText[i][ViewParam.COUNT].getId());
                i++;
// . . . . . . . . . . . .
//Устанавливаем слушателя
DialogText[i-2][ViewParam.COUNT].setOnClickListener(ActivityMain.this);
Check1_id = DialogText[i-2][ViewParam.COUNT].getId();
if (D17) Log.i(TAG, "Check1_id = " + Check1_id);
DialogText[i-1][ViewParam.COUNT].setOnClickListener(ActivityMain.this);
Check2_id = DialogText[i-1][ViewParam.COUNT].getId();
if (D17) Log.i(TAG, "Check2_id = " + Check2_id);
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
            <include
                android:id="@+id/Line_0"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                layout="@layout/frame_row" />
 
            <include
                android:id="@+id/Line_1"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                layout="@layout/frame_row" />
 
            <include
                android:id="@+id/Line_2"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                layout="@layout/frame_row" />
frame_row.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    
    <TextView
        android:id="@+id/textViewCheckText"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="left|center_vertical"
        android:textSize="24sp" />
    
    <TextView
        android:id="@+id/textViewCheckCount"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="left|center_vertical"
        android:textSize="24sp" />
 
</LinearLayout>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2016, 00:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обработчик нажатия для вложенных лайаутов (Программирование Android):

Обработчик нажатия на ListView - Программирование Android
Добрый день, перерыл много сайтов, но ответ все же не нашел. Проблема в следующем. У меня имеется обычный ListView и стандартный...

Обработчик нажатия в ExpandableListView - Программирование Android
Есть ExpandableListView сделанный по примеру... Т.е. есть разворачиваемый список второго уровня, как повесить обработчик нажатия для...

Eclipse обработчик нажатия клавиши - Программирование Android
Задача состоит в том, как передать параметры из диалогового окна. Есть главная активность с кнопкой, по нажатию которой появляется...

EditText обработчик нажатия на Enter - Программирование Android
Всем привет! Не могу понять, почему не работает код: final EditText editText = (EditText)findViewById(R.id.editText); ...

Кнопка в listView и обработчик нажатия - Программирование Android
Здравствуйте.Помогите пожалуста. Есть список ListView обрабатываю нажатие элемента из списка вот этим кодом mList = (ListView)...

Обработчик событий для ImageButton - Программирование Android
У ImageButton такой же обработчик событий как и у Button? то есть onClickListener функция onClick да?

7
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 938
04.08.2016, 00:39 #2
Как вариант пишешь класс с интерфейсом нажатия кнопки и в конструктор передаешь число
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Any implements View.OnClickListener {
      private int Id;
      public Any(int Id) {
          this.Id = Id;
      }
     
      @Override
      public void onClick(View v) {
         if (Id == 0) {}
          if (Id == 1) {}  
      }
      
      
  }
Передаешь так:
Java
1
DialogText[i-2][ViewParam.COUNT].setOnClickListener(new Any(ID));
Где ID - Нужное тебе число
1
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 523
04.08.2016, 10:06  [ТС] #3
Спасибо огромное. Хорошее решение, вечером реализую.
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,066
Завершенные тесты: 1
04.08.2016, 11:01 #4
я бы все view находил и помечал через setTag() и тогда не нужно было бы никаких интерфейсов

названия переменных в коде выше не по конвенции и вызывают тошноту
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 523
04.08.2016, 11:14  [ТС] #5
Цитата Сообщение от Паблито Посмотреть сообщение
названия переменных .. вызывают тошноту
Будет отравление - милости просим, вместо марганцовки )))
А так, спс за критику.
Дайте ссылку на норм рекомендации по "конвенции" - с удовольствием почитаю.
0
Hank
60 / 51 / 4
Регистрация: 28.12.2011
Сообщений: 289
04.08.2016, 11:25 #6
Цитата Сообщение от korsaj Посмотреть сообщение
Дайте ссылку на норм рекомендации по "конвенции"
"Совершенный код" Стив Макконнелл (не реклама)
1
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,066
Завершенные тесты: 1
04.08.2016, 11:32 #7
Цитата Сообщение от korsaj Посмотреть сообщение
рекомендации по "конвенции" - с удовольствием почитаю.
https://www.google.com.ua/search?q=j...ng+conventions
1
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 523
04.08.2016, 11:36  [ТС] #8
Спс гуглом умею пользоваться, читаю..
0
04.08.2016, 11:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2016, 11:36
Привет! Вот еще темы с ответами:

Обработчик событий для динамического Button - Программирование Android
у меня есть radiogroup с 2-мя radiobutton и в зависимости от них устанавливается тот или иной layout на странице. В отдельных методах я...

Один обработчик для нескольких switch - Программирование Android
Привет. Делаю приложение для управления устройством на ардуино по блютуз. Кое как разобрался как заставить работать switch, но у меня на...

Один обработчик для динамических кнопок - Программирование Android
Кнопки создаются/удаляются, и у них один OnClickListener. Но при нажатии, надо получить текст именно с той кнопки на которую нажали. Как...

Один обработчик для нескольких ImageButton - Программирование Android
Есть у меня несколько ImageButton на TableView. На них изображение. Создаю обработчик дерез установку в XML android:onClick. Как можно для...


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

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

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