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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.77
Severomor1
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 36
#1

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

22.04.2014, 13:53. Просмотров 3506. Ответов 31
Метки нет (Все метки)

Привет,
Есть ListView на основе BaseAdapter. Каждый элемент содержит TextView и несколько чекбоксов. Как обработать нажатие на конкретный CheckBox? onListItemClick при нажатие на чекбокс не вызывается.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
23.04.2014, 16:52     Обработка нажатия CheckBox в ListView #21
NiRamz слыш ты внимательно прочитал бы что он вообще сделал

Добавлено через 1 минуту
Цитата Сообщение от MonsterNya Посмотреть сообщение
Создал дополнительный ListView для CheckedTextView, но получил несоответствие высоты строк.
Ты ваще NiRamz погнал на меня, жду извинений
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
23.04.2014, 16:59     Обработка нажатия CheckBox в ListView #22
Прочитай сначала что было описано, далее какие пути решения были предприняты. А потом еще раз на то что я написал.

Не по теме:

и как бы не в подворотне общаемся, можно и более уважительно высказываться

MonsterNya
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 27
23.04.2014, 18:24     Обработка нажатия CheckBox в ListView #23
NiRamz, спасибо, а можно подробнее? сейчас у меня так
Java
1
2
3
4
5
6
7
8
ListView lvData;
lvData.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {                
                m_id = id;
                showDialog(IDM_ACTION);
            }
        });
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
23.04.2014, 19:53     Обработка нажатия CheckBox в ListView #24
Цитата Сообщение от kirawa Посмотреть сообщение
Создал дополнительный ListView для CheckedTextView, но получил несоответствие высоты строк.
тоесть он создал два б***ь ListView ёб*****й в рот и получил несоответствие строк я не понимаю
MonsterNya
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 27
23.04.2014, 21:43     Обработка нажатия CheckBox в ListView #25
В onCreate сделал
Java
1
2
3
text = (TextView) findViewById(R.id.itemID);
TextView text = new TextView(this);
text.setOnClickListener(new MyClickListener());
А в MainActivity
Java
1
2
3
4
5
6
7
class MyClickListener implements View.OnClickListener {
         @Override
         public void onClick(View v) {
         // TODO Auto-generated method stub
         Log.d("my_tag", "Boom");
         }
         };
Но так не работает, строка всё ещё выделяется целиком. Что делаю не так?
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
24.04.2014, 11:10     Обработка нажатия CheckBox в ListView #26
это все делается в getView в адаптере
MonsterNya
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 27
24.04.2014, 12:11     Обработка нажатия CheckBox в ListView #27
Вот только адаптер у меня сейчас
Java
1
scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from, to);
Я так понимаю мне его полностью переделать надо?
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
24.04.2014, 12:26     Обработка нажатия CheckBox в ListView #28
да, унаследуйте свой класс от CursorAdapter
MonsterNya
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 27
24.04.2014, 13:51     Обработка нажатия CheckBox в ListView #29
Уфф, что-то вышло, только теперь строки пустые и сначала отрабатывает lvData.setOnItemClickListener и вызывает showDialog(IDM_ACTION), а после выбора действия и возвращения к списку работает Toast кликлик...А если убрать lvData.setOnItemClickListener, то вообще по нажатию на строку списка нчиего не происходит
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
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);     
 
        // открываем подключение к БД
        db = new DB(this);
        db.open();
 
        // получаем курсор
        refreshCursor();
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.COLUMN_ID, DB.COLUMN_TITLE,
                DB.COLUMN_TRIGGER };
        int[] to = new int[] { R.id.itemID, R.id.itemTitle, R.id.itemTrigger };
 
        // создааем адаптер и настраиваем список
        scAdapter = new CustomCursorAdapter(this, R.layout.item, cursor, from,
                to);
        lvData = (ListView) findViewById(R.id.lvData);
        
        // устанавливаем режим выбора пунктов списка 
        lvData.setChoiceMode(ListView.CHOICE_MODE_SINGLE);////////////////////////////////
                
        lvData.setAdapter(scAdapter);       
        
        text = (TextView) findViewById(R.id.itemTrigger);       
        
        lvData.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {                
                showDialog(IDM_ACTION);
            }
        });
    }   
     
    public class CustomCursorAdapter extends SimpleCursorAdapter {
 
         public CustomCursorAdapter(Context context, int layout, Cursor cursor,
                String[] from, int[] to) {
            super(context, layout, cursor, from, to);
            // TODO Auto-generated constructor stub
        }
           class ViewHolder {
             TextView b;
         }
        public View getView(final int position, View convertView, ViewGroup parent)
        {
            View view = convertView;
            ViewHolder holder;
            if(view == null) {
                LayoutInflater vi = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                   view = vi.inflate(R.layout.item, null);
            holder = new ViewHolder();
            holder.b = (TextView) view.findViewById(R.id.itemTrigger);
            view.setTag(holder);
            }
            else
            {
 
                holder = (ViewHolder) view.getTag();
            holder.b.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getApplicationContext(),"ClickClick "+position, Toast.LENGTH_LONG).show();
                }
            });
            }
            return view;
        }}
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
24.04.2014, 15:01     Обработка нажатия CheckBox в ListView #30
Цитата Сообщение от MonsterNya Посмотреть сообщение
lvData.setOnItemClickListener(new AdapterView.OnItemClickListener() {
* * * * * * public void onItemClick(AdapterView<?> parent, View view,
* * * * * * * * * * int position, long id) {* * * * * * * *
* * * * * * * * showDialog(IDM_ACTION);
* * * * * * }
* * * * });
убираем.

Цитата Сообщение от MonsterNya Посмотреть сообщение
holder.b.setOnClickListener(new View.OnClickListener() {
* * * * * * * * public void onClick(View v) {
* * * * * * * * * * // TODO Auto-generated method stub
* * * * * * * * * * Toast.makeText(getApplicationContext(),"ClickClick "+position, Toast.LENGTH_LONG).show();
* * * * * * * * }
* * * * * * });
* * * * * * }
меняем на
Java
1
holder.b.setOnClickListener(new MyListener());
MonsterNya
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 27
24.04.2014, 15:35     Обработка нажатия CheckBox в ListView #31
А что такое MyListener() и что там лежит?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 16:28     Обработка нажатия CheckBox в ListView
Еще ссылки по теме:
Кнопка в listView и обработчик нажатия Android
Обработка checkbox'ов Android
Обработка нажатия EditText Android
Android Обработка нажатия кнопок
Обработка нажатия на RadioButton Android

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

Или воспользуйтесь поиском по форуму:
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
24.04.2014, 16:28     Обработка нажатия CheckBox в ListView #32
в этой теме я об этом писал уже
Yandex
Объявления
24.04.2014, 16:28     Обработка нажатия CheckBox в ListView
Ответ Создать тему
Опции темы

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