Android: обработчики событий для пользовательского просмотра? (ВОПРОС ОБНОВЛЕНО)

СТАРЫЙ ВОПРОС (уже ответил Марком - Ответ должен использовать getTag ()):

Допустим, у меня есть ListView с пользовательским макетом для каждой строки, имеющей ImageView и TextView. Теперь, когда сделан щелчок, я могу определить, какое изображение и какое текстовое представление были нажаты, основываясь на представлении, но если мне нужно передать эту информацию, чтобы сказать другое действие, мне нужна позиция. Но как я могу получить положение элемента, на который нажали в списке?

ПЕРЕСМОТРЕННЫЙ ВОПРОС:

Я делаю следующее: Пользовательский ListView с ImageView и TextView. Я хотел бы выполнить различные действия в зависимости от того, было ли нажато изображение или текстовый элемент. Теперь есть два подхода к обработке событий:

Подход № 1. Присоедините прослушиватель OnItemClick к элементу в ListView и выполните подходящее действие. Проблема: остается вопрос о том, какой элемент (изображение или текст) был нажат. Как бы я определил эту часть информации и затем предпринял необходимые действия?

Подход № 2. Присоедините прослушиватель OnClick к изображению и тексту отдельно внутри каждого элемента списка и затем выполните подходящее действие. Проблема: я очень скептически отношусь к эффективности этого подхода. Кроме того, когда выполняется щелчок, строка элемента не выделяется, что делает его неинтуитивным. Как бы я выделил строку в этом случае?

Какие-либо предложения?

12.10.2009 22:48:13
Вам просто нужно, чтобы строка была кликабельной или элементы внутри каждой строки?
Jeremy Logan 12.10.2009 23:13:52
Я на самом деле ищу элементы внутри строки ... Но я согласен с тем, что прикрепляю обработчики событий либо к элементам внутри строки (что кажется очень громоздким), либо присоединяю обработчик событий к строке, а затем определяю, какое представление было нажато. .. (что кажется более хорошим способом сделать что-то) ...
Legend 12.10.2009 23:18:26
@ Легенда, ты получил ответ на это? Я застрял в той же проблеме. Что вы сделали, чтобы определить, какой вид (просмотр изображений или просмотр текста был нажат)? Кроме того, я очень новичок в Android, я знаю, как назначить события onCLick для представлений индивидуально, однако, как это сделать для каждого представления подряд? Намерение Eack, которое я генерирую, должно быть различным, в зависимости от того, в каком представлении щелкнули и в какой строке оно было.
harshit 11.10.2012 07:44:33
1 ОТВЕТ
РЕШЕНИЕ

Прикрепите позицию к строке (или одному из ее виджетов) с помощью setTag()и получите ее, когда это необходимо, с помощью getTag().

5
12.10.2009 23:10:38
Огромное спасибо ... Значит ли это, что я действительно могу установить тег для элемента (который содержит всю мою часть информации) сам? В этом случае мне не нужно беспокоиться о получении атрибутов элемента с помощью переменной позиции ... Есть предложения?
Legend 12.10.2009 23:15:22
Кроме того, если все это выглядит сложным, есть ли способ узнать, по какому виду щелкнули, и затем выполнить определенное действие?
Legend 12.10.2009 23:17:29
С первым комментарием я не могу ответить на это в аннотации. Во втором комментарии, ваш OnClickListener сообщает вам, какой View был выбран в методе onClick ().
CommonsWare 13.10.2009 00:05:42
Спасибо ... Так что, если я добавлю OnItemClickListener в просмотр списка, он не скажет мне, какое представление было щелкнуто (или делает это?). Я не смог найти способ определить, какой вид (то есть изображение или текстовое представление) был нажат ...
Legend 13.10.2009 00:30:17