Эй, ребята, я занимался этим некоторое время, и я пока не нашел решения, которое бы работало на 100%.
Выпуск
У меня есть галерея Android, которая циклически перебирает элементы, каждый из которых состоит из ImageView (давайте назовем его «Миниатюра») и другого представления под ним с некоторым текстом и небольшим значком (назовем его «Заголовок»).
То, чего я хотел бы добиться, - это 2 различных действия в зависимости от того, где пользователь щелкает, и все это без нарушения способа перемещения галереи влево и вправо.
Например, если щелкнуть миниатюру, я хотел бы выполнить действие A (например, открыть увеличенную версию), а при нажатии на заголовок я бы хотел выполнить действие B, скажем, всплывающее окно с тостом. с названием картинки.
Вещи, которые я пробовал
Есть 2 подхода к проблеме, как я ее вижу:
Подход 1
Присоедините OnItemClickListener к элементу Gallery из основного представления, содержащего галерею, а затем присоедините OnClickListener к заголовку из адаптера Gallery.
Несмотря на то, что этот подход работает, кажется, что он не дает шевелиться галерее, если она захвачена и перетащена заголовком.
Поскольку onClick возвращает void, похоже, нет способа передать событие onClick для последующей обработки в onItemClick галереи.
Так как я хотел бы иметь возможность бросать, используя Название, этот подход не работает для меня, по крайней мере, в его текущей версии.
Подход 2
Второй подход заключается в том, чтобы иметь всю логику обнаружения в наборе галереи setOnItemClickListener.
Если бы был способ выяснить, был ли вид, на который щелкнули, это Миниатюра или Заголовок, все было бы очень просто, и бросок был бы целым.
Но я пока не могу понять, как это сделать.
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
// TODO: figure out which view has been clicked on, but how?
}
}
Поскольку я использую бесконечный адаптер с парадигмой ViewHolders, я попытался напечатать значения этих параметров:
Log.d("IDs", v.getId() + " " + ((ViewHolder) v.getTag()).thumbnail.getId() + " " + getSelectedItemId() + " " + parent.getId() + " " + parent.getItemIdAtPosition(0));
но все они были разными после нажатия, скажем, Thumbnail:
-1 2131230800 -9223372036854775808 2131230865 0
Итак, теперь я в тупике. Мудрое сообщество Android, можете ли вы мне помочь?
Спасибо.