Может ли Gridview иметь прослушиватель onclick и onitemclick одновременно?

#android #user-interface

#Android #пользовательский интерфейс

Вопрос:

У меня есть gridview, использующий ImageAdapter. В настоящее время можно щелкнуть и долго щелкать каждое отдельное изображение в gridview. Я пытаюсь добавить функциональность, чтобы можно было также щелкнуть сам gridview, то есть пространство, не заполненное ImageAdapter . Это мой код для моей попытки на данный момент:

 mGridViewWords.setAdapter(new AACButtonAdapter(this, button_size, TouchButtonAdapter.TOPIC_WORDS, mDB));

        mGridViewWords.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                AddWordButtonAction((TouchButton) v);
            }
        });
        mGridViewWords.setOnClickListener(new SelectViewListener());

        mGridViewWords.setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> parent_view, View button, int position, long id) {
                removeButtonFromView((GridView)parent_view, position, mCurrentWordCategory);
                return true;
            }
        });
  

однако при попытке использовать .setOnClickListener() я получаю эту ошибку в Logcat:

java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead

Есть ли у кого-нибудь советы относительно различных способов получения нужной мне функциональности? Можно ли установить два адаптера для gridview?

Ответ №1:

Предполагая, что ваш GridView занимает весь экран, одним из решений было бы разместить под ним другой View в FrameLayout, который также заполняет весь экран (например, ImageView, в котором не указан android: src). Если пользователь нажимает на область, не занятую элементом сетки, событие касания переходит к базовому представлению, где вы можете обработать его как щелчок в GridView, как вы и хотели. Только слегка взломанный, но ваша ситуация необычна.

Комментарии:

1. хм, это похоже на идею, однако у меня есть 4 просмотра сетки, где это должно было бы произойти.