2013-06-18 156 views
0

我的應用程序的目的是搜索歌曲(deezer sdk)並在GridView中顯示搜索結果。我希望能夠擁有專輯封面和下面的「藝術家 - 標題」。由於「藝術家標題」有時可能會很長,我希望能夠水平滾動。我在互聯網上看到,我必須將該項目設置爲「focusable = false」,但這似乎沒有改變任何內容。 我的GridView裏面的物品的XML看起來是這樣的:GridView上的ItemClickListener無法正常工作

<?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的項目,而不是直接爲GridView設置一個ItemClickListener

+0

op的方法有什麼問題? – Raghunandan

+0

嗯......我把監聽器放在我的自定義適配器的getView()中,它的工作原理是唯一的,它只有當我點擊圖片,而不是整個gridview的單元格 雖然,我同意raghynandan,我不明白爲什麼它不適用於活動(到處互聯網我在活動中見過聽衆:x) –

+0

如果您不希望適配器知道點擊某個項目時會發生什麼情況,這不是一個好方法。 –