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

Обработчик нажатия в ExpandableListView

05.08.2014, 21:06. Просмотров 1516. Ответов 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 минуту
Короче пообщался на форуме сам с собой
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2014, 21:06
Ответы с готовыми решениями:

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

EditText обработчик нажатия на Enter
Всем привет! Не могу понять, почему не работает код: final EditText editText...

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

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

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

3
ihimaru
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 22
17.10.2014, 05:09 2
Здравствуйте! Столкнулся с такой же проблемой , не могли бы вы показать весь код? Четвертую ночь уже сижу не могу разобраться, я так понимаю у вас тоже по нажатию должен открываться класс с WebView с подробным описанием ? =)
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
17.10.2014, 11:03 3
ihimaru, не понял вас. У mcGurov был простой вопрос по ExpandableListView, который решался поиском названия события. Причём тут WebView? Что вы хотите сделать? Поглядите тот урок на startandroid.ru, что ли, там достаточно написано, можете поискать и на других.
0
mcGurov
3 / 3 / 0
Регистрация: 30.07.2013
Сообщений: 101
17.10.2014, 12:17  [ТС] 4
ihimaru, у меня не было WebView... А что именно не получается? Что мешает запустить активность в которой будет WebView?

Добавлено через 3 минуты
Может ошибка в другом? Бывает сидишь три часа, ищешь ошибку, а на самом деле забыл активность в манифесте прописать, бывает...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2014, 12:17

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

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

OnClick ExpandableListView
Пример для ItemList, который нашел в интернете. ...


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

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

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