0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 22
1

ListView подключение обработчика нажатия

08.02.2019, 15:25. Показов 1107. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно есть ListView, который отображает одну из двух таблиц:
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
29
30
31
32
        switch (tekzakladka){
            case rabota:{
                if (RabotaOC != null) {
                    ListView lvr = (ListView) findViewById(R.id.Table);
                    ArrayAdapter<strRabotaOC> adapter = new RabotaAdapter(context, R.layout.strrabota, RabotaOC);
                    lvr.setAdapter(adapter);
                    lvr.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                            int  a = 2;
                        }
                    });
                    break;
                }
            }
            case zap: {
                if (ZapOC != null) {
                    ListView lvz = (ListView) findViewById(R.id.Table);
                    ArrayAdapter<strZapOC> adapter = new ZapAdapter(context, R.layout.strzap, ZapOC);
                    lvz.setAdapter(adapter);
                    lvz.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                            int  a = 2;
                        }
                    });
                    break;
                }
            }
        }
Отображает все нормально, но во втором случае обрабатывается нажатие, а в первом нет,
хотя файлы R.layout.strrabota и R.layout.strzap практически одинаковые, и структура ArrayAdapter также

Что может быть?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2019, 15:25
Ответы с готовыми решениями:

Применение общего обработчика нажатия для всех кнопок на форме
Добрый день. Как можно сделать так, чтобы ко всем кнопкам на экране ,применялся один обработчик....

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

ListView не реагирует на нажатия
Кинул на активность элемент ListView, присвоил ей кастомный адаптер и слой для элементов. В лист...

Перестали происходить нажатия на ListView
Кто не спит, помогите как можно скорее. Есть ListView. вроде ничего не трогал, но перестало...

9
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
08.02.2019, 15:44 2
дебагером пройтись не судьба?
0
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 22
08.02.2019, 15:58  [ТС] 3
так в отладке и не заходит при отображении первой таблицы - во второй - все нормально
0
111 / 89 / 29
Регистрация: 07.01.2017
Сообщений: 456
08.02.2019, 16:11 4
a_alenkin, куда именно не заходит? Почему не заходит?
0
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 22
08.02.2019, 16:19  [ТС] 5
ListView привязывается либо к одному ArrayAdapter либо к другому, после этого setOnItemClickListener - устанавливаю обработчики нажатия там где в моем листинге int a = 2 - я ставлю точки останова в Андроид студио
И при выполнении на эмуляторе, когда отображен второй адаптер - все срабатывает, при отображении же первого адаптера
не заходит в обработчик
0
111 / 89 / 29
Регистрация: 07.01.2017
Сообщений: 456
08.02.2019, 16:34 6
a_alenkin, это как раз и значит, что есть проблема. Проверь все в плане установки, ссылки и прочее.
0
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 22
11.02.2019, 12:20  [ТС] 7
Да - нашел когда перестает работать обработчик нажатия - в R.layout.strrabota есть CheckBox, у которого android:clickable="false"- нужен только для отображения
если я его убираю - все работает
0
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 22
13.02.2019, 15:59  [ТС] 8
С этим разобрался:
Элемент списка содержит CheckBox, который также имеет свой слушатель нажатий. Попробуйте удалить фокус у него:
android:focusable="false"
android:focusableInTouchMode="false"
А как определить на каком подчиненном элементе было нажатие?
Java
1
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
view возвращает LinearLayout строки, в нем несколько TextView (колонки таблицы), надо определить на какой было нажатие.
могу подключить обработчик для TextView в методе getView адаптера, но тогда неизвестна позиция (номер строки) самого списка
0
111 / 89 / 29
Регистрация: 07.01.2017
Сообщений: 456
13.02.2019, 16:03 9
a_alenkin, position не то?
1
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 22
13.02.2019, 16:45  [ТС] 10
Спасибо! когда получаю View для элемента - устанавливаю OnClick - все работает
0
13.02.2019, 16:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2019, 16:45
Помогаю со студенческими работами здесь

Обработка нажатия элемента ListView
Помогите решить один вопрос: у нас есть ListView, в котором имеются элементы; нужно нажать на...

Обработка нажатия CheckBox в ListView
Привет, Есть ListView на основе BaseAdapter. Каждый элемент содержит TextView и несколько...

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

Выход из обработчика событий нажатия кнопки
Добрый день. Представьте себе окошко с полями для ввода и кнопкой. Если данные введены корректно,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru