#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 просмотра сетки, где это должно было бы произойти.