setOnItemClickListener VS setOnItemSelectedListener в ListView.

Я хочу установить onClickListener для элементов ListView, но вижу два метода setOnItemClickListener и setOnItemSelectedListener. Я не нашел оправданного объяснения этим двум в официальных документах. Какой использовать для каких целей?

Чтобы выбрать элемент, пользователь должен будет щелкнуть элемент, тогда в чем польза различных методов?


person Ayush Goyal    schedule 06.09.2012    source источник


Ответы (5)


Это похоже на

элемент щелкнут (одиночный выбор) по сравнению с выбранным элементом (используется при множественном выборе)

person Aditya Nikhade    schedule 06.09.2012
comment
+1 за различие между одиночным выбором и множественным выбором. Стоит отметить для всех, кто попадает сюда из поиска, что единственный выбор может быть установлен настройками listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE) - person Ben Pearson; 21.11.2013

Отличие этих методам представлено в их описании:

has been selected vs has been clicked

На самом деле разница такая же, как между выбрано и нажато в терминах Android. Выберите это больше похоже на выделение, пожалуйста, обратитесь к более подробному объяснению состояния selected здесь (под android:state_selected). Клик — это то же самое, что и нажатие в терминах Android, и описывается по той же ссылке, но в разделе android:state_pressed.

person sandrstar    schedule 06.09.2012

Не обязательно правда. У вас может быть ListView, по которому можно будет перемещаться с помощью клавиатуры или акселерометра. Кроме того, щелчок по элементу не обязательно означает его выбор - возможно, после выбора чего-либо, когда вы хотите заблокировать выбор, пока не произойдет какое-либо другое событие.

Для всех целей, если вы хотите отреагировать на выбор элемента, используйте setOnItemSelectedListener, но если вы хотите отреагировать на пользователя, нажимающего на них, используйте setOnItemClickListener.

person norbitheeviljester    schedule 06.09.2012

Я думаю, что OnItemSelectedListener вызывается, когда элемент в списке выбирается с помощью клавиш навигации на клавиатуре или с помощью тачбола.

person sujith    schedule 06.09.2012

Я не уверен, но это мое мнение. Может быть, это неправильно. setOnItemClickListener: зарегистрируйте обратный вызов, который будет вызываться при нажатии элемента в этом AdapterView. Он всегда возвращает true.

setOnItemSelectedListener: Зарегистрируйте обратный вызов, который будет вызываться при нажатии элемента в этом AdapterView. Он возвращает true, а также false. Если не выбран какой-либо элемент, он покажет, что ничего не выбрано. Это просто заставляет пользователя выбрать параметр. Выберите элемент и перейдите к следующему. Но когда пользователь забыл выбрать элемент, тогда он также запомнит пользователя, что он не выбрал никакой опции.

person Maidul    schedule 06.09.2012