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

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

Войти
Регистрация
Восстановить пароль
 
THE_AHAPX
-1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 29
#1

Обработка объектов в listview - Программирование Android

23.09.2014, 22:50. Просмотров 817. Ответов 9
Метки нет (Все метки)

Такая проблема... Хочу создать 50 строк в listview, в каждой строке по textview и button. Вопрос в том, как потом обрабатывать эти объекты. К примеру, как присвоить конкретному textview.settext или разные обработчики для button. Т.е. как выцепить id этих объектов, в какую сторону копать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2014, 22:50     Обработка объектов в listview
Посмотрите здесь:

Обработка свайпа в ListView - Программирование Android
Добрый день, Мне нужно сделать удаление элементов из ListView по свайпу. Делаю так: lv.setOnTouchListener(new View.OnTouchListener()...

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

Listview - Программирование Android
Добрый день, В структуре ListView есть два элемента,которые он показывает Item и SubItem. В Item вставить значение не проблема,всё...

Listview в listview - Программирование Android
Добрый.. вечер. Вопрос такого плана - есть listview созданный через кастомный адаптер, в элементах этого listview есть еще один listview,...

ListView - Программирование Android
Как в ListView задавать значения Sub Item?

ListView - Программирование Android
Пытаюсь сделать по аналогии с уроком MySql + Android. Он есть проблема: ListView lv = getListView(); getListView подсвечивается...

id ListView - Программирование Android
как дать каждому item уникальный id d listview и использовать его для проверки базы данных помогите заранее спасибо

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
24.09.2014, 09:31     Обработка объектов в listview #2
Это до отображения нужно или уже после?
DevExp
6 / 6 / 2
Регистрация: 27.05.2013
Сообщений: 59
24.09.2014, 09:40     Обработка объектов в listview #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
используй BaseAdapter

Добавлено через 6 минут
вот кусок от ExpandableListView переделаешь под себя
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
100
101
102
103
104
105
protected ExpListAdapter createAdapter() {
        Parcelable state = elvClients.onSaveInstanceState();
        
        ArrayList<HashMap<String, Object>> groups = ((OrdersEditor) getActivity()).alDictionaryClients;
        ArrayList<ArrayList<HashMap<String, Object>>> childs = ((OrdersEditor) getActivity()).alClientsChildList;
        ExpListAdapter adapter = new ExpListAdapter(getActivity(), groups, childs); 
        
        elvClients.onRestoreInstanceState(state);
                
        return adapter;
    }
    
    public class ExpListAdapter extends BaseExpandableListAdapter {
 
        private ArrayList<HashMap<String, Object>> mGroups;
        private ArrayList<ArrayList<HashMap<String, Object>>> mChilds;
        private Context mContext;
      
        public ExpListAdapter (Context context, ArrayList<HashMap<String,Object>> groups, ArrayList<ArrayList<HashMap<String, Object>>> childs){
            mContext = context;
            mGroups = groups;
            mChilds = childs;
        }
        
        @Override
        public int getGroupCount() {
            return mGroups.size();
        }
 
        @Override
        public long getGroupId(int groupPosition) {
            return groupPosition;
        }
 
        @Override
        public Object getGroup(int groupPosition) {
            return mGroups.get(groupPosition);
        }
        
        @Override
        public int getChildrenCount(int groupPosition) {
            return mChilds.get(groupPosition).size();
        }
 
        @Override
        public Object getChild(int groupPosition, int childPosition) {
            return mChilds.get(groupPosition).get(childPosition);
        }
 
        @Override
        public long getChildId(int groupPosition, int childPosition) {
            return childPosition;
        }
 
        @Override
        public boolean hasStableIds() {
            return true;
        }
 
        @Override
        public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
            if (convertView == null) {
                LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(R.layout.orderseditor_clients_group, null);
            }
            ...
 
            //здесь пропишешь кнопки            
            ImageButton btnInfo = (ImageButton) convertView.findViewById(R.id.btnInfo);
            btnInfo.setFocusable(false);
            btnInfo.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (elvClients.isGroupExpanded(groupPosition)) {
                        elvClients.collapseGroup(groupPosition);
                    } else {
                        elvClients.expandGroup(groupPosition);
                    }
                }
            });
            
            if ((groupPosition % 2) == 0) {
                convertView.setBackgroundResource(R.drawable._highlight_item_even);
            } else {
                convertView.setBackgroundResource(R.drawable._highlight_item_odd);
            }
 
            return convertView;
        }
 
        @Override
        public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
            if (convertView == null) {
                LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(R.layout.orderseditor_clients_child, null);
            }
        ...                             
            return convertView;
        }
 
        @Override
        public boolean isChildSelectable(int groupPosition, int childPosition) {
            return true;
        }
    }
THE_AHAPX
-1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 29
24.09.2014, 14:40  [ТС]     Обработка объектов в listview #4
Менять после отображения

Добавлено через 6 минут
Спасибо за пример, я еще в ступоре как эти кнопки создавать... Достаточно одной прописанной кнопки в layout? Или нужно создавать 50 кнопок?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
24.09.2014, 14:41     Обработка объектов в listview #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от THE_AHAPX Посмотреть сообщение
Менять после отображения
Есть метод setOnItemClickListener() у ListView, в него при клике по элементу приходит и вьюшка на которую нажали и порядковый номер элемента. А там уж обычными способами меняйте.
DevExp
6 / 6 / 2
Регистрация: 27.05.2013
Сообщений: 59
24.09.2014, 14:43     Обработка объектов в listview #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
тебе надо создать xml в которой будет строка твоего listview
там будут TextView, Кнопки и тд.

смотри пример я там прописал как тебе запрограммировать кнопки в BaseAdapter в getGroupView
THE_AHAPX
-1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 29
24.09.2014, 15:04  [ТС]     Обработка объектов в listview #7
Всем спасибо, буду разбираться, отпишусь, если что

Добавлено через 11 минут
Т.е. если мне нужно обработать 50 кнопок, мне 50 кнопок создать в xml?
DevExp
6 / 6 / 2
Регистрация: 27.05.2013
Сообщений: 59
24.09.2014, 15:06     Обработка объектов в listview #8
нет - 1 кнопку в xml.
Напиши что хочешь получить
THE_AHAPX
-1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 29
24.09.2014, 15:15  [ТС]     Обработка объектов в listview #9
Ну я так понял, что в примере обработчик события привязан к одной кнопке, и в xml только одна кнопка.
Java
1
 ImageButton btnInfo = (ImageButton) convertView.findViewById(R.id.btnInfo)
Как тогда создать еще один обработчик события и привязать его к R.id.btnInfо, если в xml достаточно только одной кнопки?
Сорь, что туплю, в этой теме новичок.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2014, 15:27     Обработка объектов в listview
Еще ссылки по теме:

Разноцветный ListView - Программирование Android
Здравствуйте. Как можно сделать список ListView с разноцветными элементами? Например четные элементы красные, нечетные - зеленые.

Оформление ListView - Программирование Android
Ребят подскажите как вот такое оформление делают у ListView или это не ListView? Может ссылочками ткнете. Всему буду рад.

Scroll listview - Программирование Android
Доброй ночи всем. Есть активити со следующим layout. &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;LinearLayout...

Прокрутка listview - Программирование Android
Подскажите как быть, когда пытаюсь прокрутить list он подсвечивается черный цветом.

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


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

Или воспользуйтесь поиском по форуму:
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
24.09.2014, 15:27     Обработка объектов в listview #10
Очень просто: xml это просто разметка, не реальный элемент. Адаптер для ListView создает по этому шаблону кучу уже реальных элементов и присваивает каждому порядковый номер. Обработчик события нажатия на кнопку в элементе будет привязан к одной кнопке, да. Но при нажатии на кнопку в обработчик нажатия (OnClickListener) придет эта кнопка целиком. Можно например в адаптере навесить на каждую кнопку tag равный порядковому номеру всего элемента, и по нему идентифицировать кнопку.
Yandex
Объявления
24.09.2014, 15:27     Обработка объектов в listview
Ответ Создать тему
Опции темы

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