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

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

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

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

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

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

Данные из SQlite в ListView, обработка события ListView - Программирование Android
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД. mList.setOnItemClickListener(new...

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

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

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Listview вывод данных и переход по нажатию на другой Listview SQLite - Программирование Android
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton? - Программирование Android
Добрый день. Затрудняюсь понять один момент: У меня есть ListView, который заполнен Items. Каждый Item - это свой XML. Пока...

9
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
24.09.2014, 09:31 #2
Это до отображения нужно или уже после?
0
DevExp
6 / 6 / 2
Регистрация: 27.05.2013
Сообщений: 59
24.09.2014, 09:40 #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;
        }
    }
1
THE_AHAPX
-1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 29
24.09.2014, 14:40  [ТС] #4
Менять после отображения

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

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

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

Копирование данных из 1 listView во 2 listView - Программирование Android
Нужно что бы при нажатии на один элемент в первом ListView он копировался во второй ListView причём многократно.Но я использую...

Переход из Listview в Listview - Программирование Android
Как сделать, что бы когда нажимаешь в главном листвью на кнопку, открывалось новое нужное(т.е. то по которому тапнули) активити с другим...

Использование ListView в ListView - Программирование Android
Всем привет. Можете показать как использовать ListView в ListView, с заполнением как внешнего ListView, так и внутреннего причем с...

Перемещение объектов ListView при помощи мыши - Delphi
Хочу сделать перемещение элементов LV мышью, но запутался. Использовать нужно OnDragOver или OnDragDrop или оба обработчика?


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

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

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