Почему автозавершение кода Android Studio отображает методы, недопустимые для объекта?

Я пытаюсь работать с элементом управления Spinner. Я успешно реализовал .setOnItemSelectedListener() и пытался реализовать .setOnItemLongClickListener().

Меня заставили поверить, что Spinner будет поддерживать .setOnItemLongClickListener(), потому что я видел это окно завершения кода Android Studio (см. Изображение ниже).

Я предполагаю, что завершение кода Android Studio использует отражение для изучения класса и определения доступных методов.

Почему Android Studio не удаляет эти методы, которые на самом деле недоступны для этих подклассов?

Возможно, отражение видит эти методы как доступные (поскольку отражение знает, что этот подкласс является ‹родительским классом›, и предполагает, что они доступны), но было бы неплохо, если бы Android Studio проделала дополнительную работу, чтобы удалить их перед отображением.

Можно ли считать это ошибкой? Я думаю, что Visual Studio лучше справляется с этим с IntelliSense.

Завершение кода Android Studio


person raddevus    schedule 28.09.2017    source источник
comment
Что заставляет вас думать, что какой-либо из этих методов недоступен?   -  person Bryan Herbst    schedule 28.09.2017
comment
Это AdapterView... Эти методы определенно доступны. developer.android.com/reference/android/widget/AdapterView.html   -  person OneCricketeer    schedule 28.09.2017
comment
Приложение аварийно завершает работу при реализации некоторых из этих методов. Например, когда я реализовал setOnItemClickListener (который находится на снимке завершения кода выше), я получаю это в журнале: java.lang.RuntimeException: setOnItemClickListener нельзя использовать со счетчиком. Также документы Google показывают, что на Spinner фактически доступен только setOnItemSELECTEDListener. См. =› developer.android.com/reference/android/widget/Spinner.html.   -  person raddevus    schedule 28.09.2017
comment
@cricket_007 Жаль, что вы сказали, что эти методы определенно доступны без изучения, потому что это может запутать других. Эти методы на самом деле недоступны на Spinner. Пожалуйста, проверьте и рассмотрите возможность удаления вашего комментария.   -  person raddevus    schedule 28.09.2017
comment
Я призываю вас расширить унаследованные методы AdapterView на этой странице.   -  person OneCricketeer    schedule 28.09.2017
comment
Я призываю вас к практической реализации. :) Дело в том, что вы видите, что сам лог фактически предупреждает, что один метод недоступен на спиннере. Это ведение журнала Android. Кроме того, я действительно могу реализовать метод setOnItemLongClick(). Однако на самом деле он никогда не стреляет. Я призываю вас создать счетчик и реализовать метод longclick и посмотреть. Кроме того, на SO есть сообщение, в котором упоминается, что Spinners не реализуют LongClick: stackoverflow.com/questions/2730610/ Сообщению 7 лет, и почему я исследовал это.   -  person raddevus    schedule 28.09.2017
comment
У тебя конечно много убеждений raddevus. Вот рабочий Spinner с прослушивателем длинных кликов i.imgur.com/qFOFgre.png недостаточно кода, показанного в вашем вопросе, чтобы увидеть, где вы ошиблись (если только это не пробел в вашем вызове .setOn setOn...). Но я уверяю вас, что у Spinners могут быть слушатели с длинным кликом.   -  person Stephen    schedule 28.09.2017
comment
@ Стивен Подожди... Что? Вы запустили этот код? Потому что, если этот код работает, вы единственный на SO и, возможно, во всей сети, кто заставил LongClick работать на Spinner. Я действительно попробую ваш код. Кроме того, я знаю, что вы действительно можете это реализовать, но код никогда не срабатывает. Кроме того, имейте в виду, что мой первоначальный вопрос заключался в том, почему показаны методы, которые на самом деле не реализованы, и, как показывает мой комментарий выше, когда вы реализуете setOnItemClickListener, приложение фактически аварийно завершает работу и записывает в журнал, что метод не может быть реализован на спиннер.   -  person raddevus    schedule 28.09.2017
comment
i.imgur.com/YCaNmFl.png   -  person Stephen    schedule 28.09.2017
comment
Кроме того, имена расположены так близко друг к другу — обратите внимание, что изначально я говорил об OnITEMLongClickListener. Я не пробовал OnLongClickListener. Я очень ценю вашу помощь. Держите меня честным здесь. :) Попробуйте OnITEMLongClickListener. Посмотрим, загорится ли он когда-нибудь. Я не верю, что это произойдет. Очень любопытный.   -  person raddevus    schedule 28.09.2017
comment
Ах, некоторые из ваших вопросов относятся к setOnLongClickListener, так что это меня сбило с толку. Я также вижу, что вы правы в том, что Spinner не позволяет использовать OnItemLongClickListener и выдает исключение, если вы попытаетесь.   -  person Stephen    schedule 28.09.2017
comment
@Stephen Спасибо, что попробовали это и упомянули то же поведение, что и я. Кроме того, я попробовал OnLongClickListener, и это действительно работает на моем Spinner. Рад, что вы указали на это, потому что теперь мне интересно, могу ли я в любом случае определить значение, которое в данный момент выбрано (в Spinner), и тогда функциональность, которую я ищу, будет работать. Хорошая дискуссия. Спасибо.   -  person raddevus    schedule 28.09.2017