Intereting Posts
Как получить встроенные метаданные главы с помощью MediaMetadataRetriever Есть ли способ добавить Extras в Activity, используя ActivityInstrumentationTestCase2 Android EditText: как применить цветной диапазон переднего плана по мере ввода? Как работает метод ArrayAdapter getView ()? StateListDrawable и черепичное растровое изображение Лучшие решения для Android SharedPreferences Почему Android Studio удаляет и / или меняет ограничения layout_margin *? Picasso Загрузить изображение из файловой системы НЕОПРЕДЕЛЕННОЕ ТОП-УРОВЕННОЕ ИСКЛЮЧЕНИЕ: com.android.dex.DexException: несколько файлов dex определяют Android Studio, неожиданно возникла проблема с драйвером GPU при запуске эмулятора Существует ли минимальный SDK для использования папок Mipmap для значков запуска? Перезагрузка Bluetooth-соединения Как установить тайм-аут keepalive в Android? Показывать только дату и время в Android Обновлены инструменты SDK и ADT до 17 и теперь получают VerifyErrors

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"