GridView onItemClickListener не работает?

Этот вопрос часто задают здесь. Многие люди получили решение и тоже работают. Я также столкнулся с той же проблемой: мой список onitemclick не работает.

В моем случае

У меня есть программа просмотра.

Внутри у меня есть фрагменты. На тех фрагментах у меня есть Gridview. Настройка списка onItemclick для просмотра сетки не работает, пробовал все случаи, которые я нашел в Интернете.

Этот просмотрщик сам добавляется в отдельный фрагмент. См. изображение для лучшего понимания. Код почти прост, поэтому не добавляю его сюда для справки. Где я могу ошибаться. если нет то как это взломать

введите здесь описание изображения

Рабочий случай: я получаю события нажатия, когда добавляю onclicklistner к кнопкам в адаптере. Но не удалось обновить текст кнопки при вызове notifydatasetchanged.


person Bora    schedule 07.08.2013    source источник


Ответы (1)


Похоже, у вас есть кнопки внутри вашего адаптера gridView. Наличие кнопок, флажков и т. д. внутри адаптера itemView приведет к тому, что фактическая строка не будет реагировать на события onItemClick. Есть несколько решений, которые вы могли бы найти, чтобы исправить это, но я бы посоветовал добавить onClickListener в строку (contentView) внутри метода getView() адаптера и обработать то, что вам нужно там. Вы можете передать позицию щелкнутого представления либо с помощью конструктора (если вы реализуете onClickListener в классе, который вы используете для setOnClickListener, либо устанавливаете позицию в final в getView и используете анонимный класс для вызова метода setOnClickListener.

Если вам нужно что-то сделать на основе этого щелчка назад во фрагменте, прочитайте немного о том, как создать обратный вызов с помощью интерфейса.

person DArkO    schedule 07.08.2013
comment
Спасибо, приятель. Четыре ответа В настоящее время я делаю то же самое. добавление списка кликов на кнопку внутри getview. Мне было интересно, получу ли я onitemclicklistner в gridview. это было бы лучше. - person Bora; 07.08.2013
comment
Это не обязательно должна быть кнопка, вы можете установить прослушиватель кликов на самом представлении содержимого, корневом представлении вашего элемента адаптера. Есть несколько трюков, которые включают в себя настройку кнопок в фокусе (false) в представлении адаптера. - person DArkO; 07.08.2013
comment
stackoverflow.com/questions/2367936/ - person DArkO; 07.08.2013