2010-11-14 5 views
40

В чем разница между этими двумя слушателями, документация говорит:разница между onItemClickListener и OnItemSelectedListener из AdapterView

OnItemSelectedListener - Определение интерфейса для обратного вызова, которая будет вызвана, когда был выбран элемент в этой точке зрения.

OnItemClickListener - Определение интерфейса для обратного вызова, вызываемого при нажатии элемента в этом AdapterView.

Выбор, нажмите, не равны ли они на сенсорном экране?

+1

Я думаю, что выбран щелчки + фокус получает, например, вы можете вызвать его с трекболом тоже – apps

ответ

52

OnItemSelectedListener используется для Spinners, а для ListViews используется OnItemClickListener.

+2

Ницца. это просто, но редко говорят об этом. Это действительно заставляет меня запутать – hqt

+2

Я думаю, вы имеете в виду: «Это меня смущает» :) Однако я согласен - интерфейсы Java часто страдают от этой странной проблемы объявления методов, которые никогда не называются. – Alex

+11

Это неверно, AdapterViews может использовать оба/обоих типа слушателей. user1611552 правильно определил разницу, и это должен быть правильный ответ. – d370urn3ur

28

AdapterView.OnItemSelectedListener вызывается только тогда, когда выбранная позиция отличается от ранее выбранной позиции или если не было выбранного элемента.

Однако AdapterView.OnClickListener вызывается, даже если вы каждый раз нажимаете один и тот же элемент.

http://developer.android.com/reference/android/widget/AdapterView.OnItemSelectedListener.html

+5

Хотя документы так говорят, но onitemselectedlistener не работает для listview, и аналогично onitemclicklistener не работает для представления spinner, поскольку это общая спецификация и не включает/исключает какие-либо конкретные исключение. – user2779311