【问题标题】:ItemClickListener on GridView not workingGridView 上的 ItemClickListener 不起作用
【发布时间】:2013-06-18 15:27:44
【问题描述】:

我的应用程序的目的是搜索歌曲 (deezer sdk) 并在 gridView 中显示搜索结果。我希望能够拥有专辑的封面和下面的“艺术家 - 标题”。由于“艺术家标题”有时可能很长,我希望能够水平滚动它。我在互联网上看到我必须将该项目设置为“focusable = false”,但这似乎并没有改变任何东西。 我的 gridview 中项目的 XML 如下所示:

<?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 :(

感谢您的帮助。

【问题讨论】:

    标签: android gridview listener adapter onitemclicklistener


    【解决方案1】:

    在它的适配器中为GridView的项目设置ItemClickListener,而不是直接为GridView设置一个ItemClickListener。

    【讨论】:

    • 嗯...我将侦听器放在自定义适配器的 getView() 中,它可以工作。唯一的问题是它仅在我单击图像时触发,而不是在完整的 gridview 单元格上。虽然,我同意 raghynandan,但我不明白为什么它在活动中不起作用(在互联网上的任何地方,我都在活动中看到了听众:x)
    • 如果您不希望适配器知道单击某个项目时会发生什么,这不是一个好方法。
    猜你喜欢
    • 2021-05-23
    • 1970-01-01
    • 2014-06-15
    • 2012-12-05
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多