【问题标题】:OnItemClick listener not triggeredOnItemClick 侦听器未触发
【发布时间】:2015-06-08 07:51:29
【问题描述】:

我正在使用自定义网格视图。我正在膨胀布局如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FEFAFA"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/relative_first"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/grid_image_first"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="@drawable/ic_action_refresh"
            android:clickable="false"
            android:focusable="false"
            android:focusableInTouchMode="false" >
        </ImageView>
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/relative_second"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/grid_text_desc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:gravity="center"
            android:singleLine="true"
            android:textAppearance="?android:attr/textAppearanceSmall" >
        </TextView>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/grid_text"
            android:orientation="horizontal" >

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/productpricefirstlayout"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="RS 200"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:textColor="#F21111" >
                </TextView>

                <TextView
                    android:id="@+id/discprice"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="(50% off)"
                    android:textAppearance="?android:attr/textAppearanceSmall" >
                </TextView>
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="3dp"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/disc_ammount"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="(Rs.400)"
                    android:textAppearance="?android:attr/textAppearanceSmall" >
                </TextView>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp" >

        <Button
            android:id="@+id/shareproduct"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="3dp"
            android:background="@drawable/share" />
    </RelativeLayout>

</LinearLayout>

我已经为网格视图设置了 setOnItemClickListener

gridView.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getActivity(),"Filter Selected Otpins",Toast.LENGTH_SHORT).show();

                }
            });

但“setOnItemClickListener”没有触发。正如我已经为图像写的那样。

"android:clickable="false"
                android:focusable="false""

所以我需要写的地方 我的 xml 中的这两行?

【问题讨论】:

  • 布局中没有网格视图
  • 为什么要给 ImageView 提供这些属性:“android:clickable="false" 和 android:focusable="false" ?另外,您是否在适配器中为 ImageView 提供了 onClickListener?
  • 嗨,blueware,我已经写了这些行来关注网格视图,从图像视图中移除焦点。我可以在 Adapter 类中为图像视图添加点击侦听器,但我不想要那个。我需要为网格视图单击监听器。

标签: android xml gridview imageview


【解决方案1】:

如果列表的任何行项包含可聚焦或可点击的视图,则 OnItemClickListener 将不起作用。

行项目必须有一个类似android:descendantFocusability="blocksDescendants".的参数

在这里你可以看到例子,你的列表项应该是什么样子

row_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:descendantFocusability="blocksDescendants"
android:gravity="center_vertical" >

// your other widgets here

</LinearLayout>

或者为内部视图添加这两行

android:focusable="false"
android:focusableInTouchMode="false"

从我之前的answer得到解决方案

【讨论】:

  • 嗨,Kartheek,谢谢,它为我完成了一半。我为每个小部件尝试了上面的代码,但它只适用于下部
  • 下半部分是什么意思?
  • 这一
  • 将 focusable 和 focusableInTouchMode 添加到视图(按钮和文本视图)。
  • Kartheek 仍然没有运气图片阻止点击:(。
猜你喜欢
  • 2013-08-22
  • 2022-06-10
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-01
相关资源
最近更新 更多