Intereting Posts
Окно «Оверлей системы» вызывает проблемы с нажатием кнопки «клавиатура» и «Назад» Идеи для физики для кубиков Как определить, вернулась ли из детской активности? ImageView с закругленными углами и внутренней тенью Удаление поля из выпадающего списка Захват звука для анализа и визуализации частот в Android Передача фокуса от родителя к детям в линейной компоновке Кабель передачи данных USB в Android Android google analytics показывает посещения россии без установки приложения на любом устройстве Как разработать приложение для Android, которое использует API календаря Google Android Как установить максимальное ограничение «word» на EditText GAE Не распознает Cookie? Мультимедийные помехи для Android Почему я не могу использовать «запустить Android lint» из меню «Окно» в Eclipse на панели инструментов, я могу запустить его, не так ли? Android Studio: не удалось создать MD5 HashFile

Android GridView не будет обнаружен

У меня есть следующий LinearLayout с GridView в нем:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <GridView android:id="@+id/songs_grid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:columnWidth="250dp" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="auto_fit" android:verticalSpacing="10dp" /> </LinearLayout> 

Данные GridView предоставляются настраиваемым адаптером (используя простой ViewHolder ):

 public class SongsAdapter extends BaseAdapter { private Context context; private LayoutInflater mInflater; private ArrayList<Song> songList; public SongsAdapter(Context context, ArrayList<Song> songList) { this.context = context; this.songList = songList; mInflater = LayoutInflater.from(this.context); } @Override public int getCount() { return songList.size(); } public Object getItem(int position) { return songList.get(position); } public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { SongViewHolder viewHolder; if (convertView == null) { convertView = mInflater.inflate(R.layout.song_list_item, null); viewHolder = new SongViewHolder(); //Get Views from Layout Template viewHolder.AlbumArt = (ImageView)convertView.findViewById(R.id.albumart); viewHolder.Title = (TextView)convertView.findViewById(R.id.title); viewHolder.Artist = (TextView)convertView.findViewById(R.id.artist); } else { viewHolder = (SongViewHolder) convertView.getTag(); } Song song = songList.get(position); Bitmap bitmap = song.getAlbumArt(); Bitmap missing = BitmapFactory.decodeResource(context.getResources(), R.drawable.albumart_missing); Bitmap albumArt = bitmap == null ? missing : bitmap; viewHolder.AlbumArt.setImageBitmap(albumArt); viewHolder.Title.setText(song.getTitle()); viewHolder.Artist.setText(song.getArtist()); convertView.setTag(viewHolder); return convertView; } } 

Когда приложение запускается, он получает список песен (из xml, но в настоящее время использует введенный вручную список) и передает его моему адаптеру, а затем устанавливает OnItemClickListener :

 GridView gridView = (GridView) findViewById(R.id.songs_grid); gridView.setAdapter(new SongsAdapter(this, fk.getSongList())); gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { LinearLayout layout = (LinearLayout)view; TextView songTitle = (TextView)layout.findViewById(R.id.song_title); Song song = fk.getSong((String) songTitle.getText()); if(song != null) { Intent play = new Intent(getBaseContext(), Play.class); startActivity(play); } } }); 

Когда я впервые реализовал этот код, все работало нормально, и я уверен, что ничего не изменил. Я пытался сделать текст прокрутки названия песни в макете, если он был слишком длинным, но не мог заставить его работать. На этом этапе я обнаружил, что клик перестает работать. Я теперь удалил (я считаю) весь этот код, но он все равно не работает.

Когда я касаюсь / щелкаю (что бы вы ни называли это), ничего не происходит. Ошибок нет.

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

Solutions Collecting From Web of "Android GridView не будет обнаружен"

Проверьте расположение элементов. Если какой-либо из представлений макета song_list_item помечен как clickable, они заблокируют прослушиватель onclick сетки от ответа.

Убедитесь, что атрибут clickable в GridView не переопределяет события click для элементов в представлении.

Я столкнулся с этой проблемой, и решение похоже на ответ dmon. Если один из дочерних элементов элемента выбирается, он также запрещает кликабельному элементу. Поэтому, если android:textIsSelectable является истинным.

Если вы сделаете все изображение и текстовое представление Android: focusable = "false" android: focusableInTouchMode = "false"

Там не будет никаких проблем в gridview item click listener

Добавьте это в ur ячейку xml

 android:descendantFocusability="blocksDescendants"