Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
mcGurov
3 / 3 / 0
Регистрация: 30.07.2013
Сообщений: 99
#1

Обработчик нажатия в ExpandableListView - Программирование Android

05.08.2014, 21:06. Просмотров 1325. Ответов 3
Метки нет (Все метки)

Есть ExpandableListView сделанный по примеру...

Т.е. есть разворачиваемый список второго уровня, как повесить обработчик нажатия для каждого элемента списка "child", чтобы например запустить активность с описанием? Например нажимаю на "Декабрь" и появляется описание...

Вот код
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
public class TestActivity extends Activity {
 
    String[] groups = new String[] { "Зима", "Весна", "Лето", "Осень" };
 
    String[] winterMonths = new String[] { "Декабрь", "Январь", "Февраль" };
    String[] springMonths = new String[] { "Март", "Апрель", "Май" };
    String[] summerMonths = new String[] { "Июнь", "Июль", "Август" };
    String[] autumnMonths = new String[] { "Сентябрь", "Октябрь", "Ноябрь" };
 
    // коллекция для групп
    ArrayList<Map<String, String>> groupData;
 
    // коллекция для элементов одной группы
    ArrayList<Map<String, String>> childDataItem;
 
    // общая коллекция для коллекций элементов
    ArrayList<ArrayList<Map<String, String>>> childData;
    // в итоге получится childData = ArrayList<childDataItem>
 
    // список атрибутов группы или элемента
    Map<String, String> m;
 
    ExpandableListView expListView;
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
 
        // заполняем коллекцию групп из массива с названиями групп
        groupData = new ArrayList<Map<String, String>>();
        for (String group : groups) {
            // заполняем список атрибутов для каждой группы
            m = new HashMap<String, String>();
            m.put("groupName", group); // время года
            groupData.add(m);
        }
 
        // список атрибутов групп для чтения
        String groupFrom[] = new String[] { "groupName" };
        // список ID view-элементов, в которые будет помещены аттрибуты групп
        int groupTo[] = new int[] { android.R.id.text1 };
 
        // создаем коллекцию для коллекций элементов
        childData = new ArrayList<ArrayList<Map<String, String>>>();
 
        // создаем коллекцию элементов для первой группы
        childDataItem = new ArrayList<Map<String, String>>();
        // заполняем список аттрибутов для каждого элемента
        for (String month : winterMonths) {
            m = new HashMap<String, String>();
            m.put("monthName", month); // название месяца
            childDataItem.add(m);
        }
        // добавляем в коллекцию коллекций
        childData.add(childDataItem);
 
        // создаем коллекцию элементов для второй группы
        childDataItem = new ArrayList<Map<String, String>>();
        for (String month : springMonths) {
            m = new HashMap<String, String>();
            m.put("monthName", month);
            childDataItem.add(m);
        }
        childData.add(childDataItem);
 
        // создаем коллекцию элементов для третьей группы
        childDataItem = new ArrayList<Map<String, String>>();
        for (String month : summerMonths) {
            m = new HashMap<String, String>();
            m.put("monthName", month);
            childDataItem.add(m);
        }
        childData.add(childDataItem);
 
        // создаем коллекцию элементов для четвертой группы
        childDataItem = new ArrayList<Map<String, String>>();
        for (String month : autumnMonths) {
            m = new HashMap<String, String>();
            m.put("monthName", month);
            childDataItem.add(m);
        }
        childData.add(childDataItem);
 
        // список аттрибутов элементов для чтения
        String childFrom[] = new String[] { "monthName" };
        // список ID view-элементов, в которые будет помещены аттрибуты
        // элементов
        int childTo[] = new int[] { android.R.id.text1 };
 
        SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
                this, groupData,
                android.R.layout.simple_expandable_list_item_1, groupFrom,
                groupTo, childData, android.R.layout.simple_list_item_1,
                childFrom, childTo);
 
        expListView = (ExpandableListView) findViewById(R.id.expListView);
        expListView.setAdapter(adapter);
    }
}
Добавлено через 8 часов 10 минут
Вообщем получилось сделать самому...

Нажатие на элемент:
Java
1
2
3
4
5
6
expListView.setOnChildClickListener(new OnChildClickListener() {
              public boolean onChildClick(ExpandableListView parent, View v,
                  int groupPosition,   int childPosition, long id) {
                Log.d(LOG_TAG, "onChildClick groupPosition = " + groupPosition + 
                        " childPosition = " + childPosition + 
                        " id = " + id);
И условие:
Java
1
2
3
4
5
if (groupPosition == 0 & childPosition == 0) {
                    Intent i = new Intent(getActivity().getApplication(), Anabas.class); 
                    startActivity(i); 
                    
                };
Помог вот этот урок...

У меня сложнее... у меня был фрагмент в фрагменте, а по-простому так:
Java
1
2
3
4
5
if (groupPosition == 0 & childPosition == 0) {
                    Intent i = new Intent(this, Anabas.class); 
                    startActivity(i); 
                    
                };
Добавлено через 1 минуту
Короче пообщался на форуме сам с собой
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2014, 21:06     Обработчик нажатия в ExpandableListView
Посмотрите здесь:

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

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

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

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

Обработчик нажатия для вложенных лайаутов - Программирование Android
Здравствуйте! Подскажите как определить какая кнопка вызвала OnClick, если кнопки находятся во вложенных однотипных layout-ах и...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ihimaru
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 22
17.10.2014, 05:09     Обработчик нажатия в ExpandableListView #2
Здравствуйте! Столкнулся с такой же проблемой , не могли бы вы показать весь код? Четвертую ночь уже сижу не могу разобраться, я так понимаю у вас тоже по нажатию должен открываться класс с WebView с подробным описанием ? =)
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
17.10.2014, 11:03     Обработчик нажатия в ExpandableListView #3
ihimaru, не понял вас. У mcGurov был простой вопрос по ExpandableListView, который решался поиском названия события. Причём тут WebView? Что вы хотите сделать? Поглядите тот урок на startandroid.ru, что ли, там достаточно написано, можете поискать и на других.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2014, 12:17     Обработчик нажатия в ExpandableListView
Еще ссылки по теме:

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

ExpandableListView не скролит - Программирование Android
Есть разметка, которая содержит последним элементом ExpandableListView (кастомизирую его). &lt;?xml version=&quot;1.0&quot;...

Прослушать ExpandableListView - Программирование Android
Здраствуйте, у меня есть код прослушки, он работает! но мне нужно вытянуть текст который находитса в етом chold_view код: ...

OnClick ExpandableListView - Программирование Android
Пример для ItemList, который нашел в интернете. listview.setOnItemClickListener(new OnItemClickListener(){ @Override ...

ExpandableListView - cannot inflate class - Программирование Android
Есть layout, на нем размещен ExpandableListView. Когда к нему применяешь свою тему оформления, выскакивает ошибка - cannot inflate class...

ExpandableListView на разных API - Программирование Android
Как вотэтувот галочку привести к одному виду? Мне больше нравится как на API 16, в середке которая. И listSelector ругается на API (т.к....


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

Или воспользуйтесь поиском по форуму:
mcGurov
3 / 3 / 0
Регистрация: 30.07.2013
Сообщений: 99
17.10.2014, 12:17  [ТС]     Обработчик нажатия в ExpandableListView #4
ihimaru, у меня не было WebView... А что именно не получается? Что мешает запустить активность в которой будет WebView?

Добавлено через 3 минуты
Может ошибка в другом? Бывает сидишь три часа, ищешь ошибку, а на самом деле забыл активность в манифесте прописать, бывает...
Yandex
Объявления
17.10.2014, 12:17     Обработчик нажатия в ExpandableListView
Ответ Создать тему
Опции темы

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