Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Grumbler
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 6
1

Контекстное меню на ExpandableListView

25.05.2013, 15:59. Просмотров 1639. Ответов 3
Метки нет (Все метки)

Здравствуйте!
подскажите как правильно определить пункт ExpandableListView (группа или элемент группы) на котором было вызвано контекстное меню?

обработчики setOnLongClickListener и setOnItemClickListener не отрабатывают,
setOnChildClickListener и setOnGroupClickListener "не ловят" long-click...


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
33
34
35
36
37
38
39
40
41
42
                elvMain = (ExpandableListView) findViewById(R.id.elvMain);
        elvMain.setAdapter(adapter);
        
        registerForContextMenu(elvMain);
 
        // нажатие на элемент
        elvMain.setOnChildClickListener(new OnChildClickListener() {
            public boolean onChildClick(ExpandableListView parent, View v,
                    int groupPosition, int childPosition, long id) {
                tvInfo.setText("setOnChildClickListener");
                Log.d("qwe", "setOnChildClickListener");
                return false;
            }
        });
    
        // нажатие на группу
        elvMain.setOnGroupClickListener(new OnGroupClickListener() {
            public boolean onGroupClick(ExpandableListView parent, View v,
                    int groupPosition, long id) {
                tvInfo.setText("setOnGroupClickListener");
                Log.d("qwe", "setOnGroupClickListener");
                return false;
            }
        });
        
        elvMain.setOnLongClickListener(new ExpandableListView.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                tvInfo.setText("setOnLongClickListener");
                Log.d("qwe", "setOnLongClickListener");
                return false;
            }
        });
        
        elvMain.setOnItemClickListener(new ExpandableListView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v,
                    int groupPosition, long id) {
                tvInfo.setText("setOnItemClickListener");
                Log.d("qwe", "setOnItemClickListener");
            }
        });
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2013, 15:59
Ответы с готовыми решениями:

Контекстное меню RecyclerView
Здравствуйте! Возникла задача создать контекстное меню для recyclerView, при выборе элемента меню...

Контекстное меню не работает
Доброго времени суток. Я отбираю записи из базы и формирую список в ListView, насаживая на каждый...

Контекстное меню в ListView
Здравствуйте,выложите пожалуйста рабочий код контекстного меню для listview и напишите пожалуйста...

ListView и контекстное меню
Подскажите как сделать так, чтобы контекстное меню знало пункт listview из которого оно было...

Контекстное меню вместо опционального
Здравствуйте! Подскажите, возможно ли сделать так, чтобы при нажатии кнопки меню на телефоне,...

3
V0v1k
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.05.2013, 16:30 2
в onCreateContextMenu приходит вся нужная информация.
1
Grumbler
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 6
25.05.2013, 20:18  [ТС] 3
Цитата Сообщение от V0v1k Посмотреть сообщение
в onCreateContextMenu приходит вся нужная информация.
Спасибо! так и есть, искал не там
0
dusshes
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 5
11.09.2013, 11:02 4
А как добыть признак группа это или элемент группы?
И как добыть код элемента?

Добавлено через 18 часов 23 минуты
Разобрался. Оставлю здесь решение, вдруг кому пригодится.

Java
1
2
3
4
5
6
7
8
9
10
11
12
    public boolean onContextItemSelected(MenuItem item) {
        
        ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item
                .getMenuInfo();
 
        Integer idItem = (int) info.id;
        Boolean isGroup = ExpandableListView
                .getPackedPositionType(info.packedPosition) == ExpandableListView.PACKED_POSITION_TYPE_GROUP;
        
        // ...
        
        }
0
11.09.2013, 11:02
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2013, 11:02

При долгом нажатии вывести контекстное меню
Здравствуйте, подскажите, пожалуйста, как сделать так, чтобы при долгом нажатии на адресную строку,...

ExpandableListView
Подскажите как быть, есть список груп(допустим их всего 3) и есть список дочерних элементов у...

ExpandableListView
Доброго времени суток! Пытаюсь сделать подсветку элементов ExpandableListView по аналогии с...


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

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

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