2013-06-18 1 views
0

Целью моего приложения является поиск песни (deezer sdk) и отображение результата поиска в gridView. Я хочу, чтобы у вас была обложка альбома и «Исполнитель - название» чуть ниже. Поскольку «название исполнителя» может когда-то быть очень длинным, я хочу, чтобы он мог прокручивать его по горизонтали. Я видел в Интернете, что мне пришлось установить элемент как «focusable = false», но это ничего не меняет. XML, из элементов внутри моего GridView выглядит следующим образом:ItemClickListener on GridView не работает

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/gridView_topLayout" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" > 

<ImageView 
    android:id="@+id/gridView_image" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:contentDescription="@string/gridTextView_Album" 
    android:src="@drawable/album_cover_default" /> 

<HorizontalScrollView 
    android:id="@+id/gridView_horizontalScroll" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="left" 
    android:clipChildren="true" 
    android:fillViewport="true" 
    android:scrollbars="none" > 

    <RelativeLayout 
     android:id="@+id/gridView_layout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:focusableInTouchMode="false" > 

     <TextView 
      android:id="@+id/gridView_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:focusable="false" 
      android:focusableInTouchMode="false" 
      android:isScrollContainer="true" 
      android:singleLine="true" /> 
    </RelativeLayout> 
</HorizontalScrollView> 

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

Это setOnItemClickListener в моей деятельности: «нажмите кнопку»

gridview.setAdapter(songSelection_adapter_listAdapter); 
gridview.setOnItemClickListener(new OnItemClickListener(){ 
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) 
{ 
    Log.i("onItemClickListener", "CLICK!"); 
} 
}); 

Это не всегда печати в logcat ничего не происходит. Я попытался с «onTouchListener», который прекрасно работает, но я не могу прокрутить мой GridView вниз :(

Спасибо за вашу помощь.

ответ

1

Набор ItemClickListener для элементов GridView в это адаптер, вместо из набора ItemClickListener непосредственно для GridView.

+0

Что не так с методом op? – Raghunandan

+0

Ну ... Я поместил слушателя внутри getView() моего пользовательского адаптера, и он работает. Единственное, что он срабатывает только тогда, когда я нажмите на изображение, а не на ячейку полного gridview. Хотя, я согласен с raghynandan, я не понимаю, почему он не работает в этой деятельности (везде на th e internet Я видел слушателя в действии: x) –

+0

Если вы не хотите, чтобы адаптер знал, что происходит при щелчке по элементу, это не очень хороший подход. –