首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setOnItemSelectedListener和setOnClickListener都不适用于GridView

setOnItemSelectedListener和setOnClickListener都不适用于GridView
EN

Stack Overflow用户
提问于 2016-12-01 18:39:38
回答 1查看 380关注 0票数 1

GridView如下:

代码语言:javascript
复制
<GridView
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_margin="0dp"
    android:horizontalSpacing="0dp"
    android:numColumns="2"
    android:stretchMode="columnWidth"
    android:verticalSpacing="0dp"
    android:fadeScrollbars="false"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:descendantFocusability="afterDescendants"/>

Java代码如下:

代码语言:javascript
复制
gridview = (GridView) findViewById(R.id.gridview);
gridview.setNumColumns(iColumnCount);
gridview.setAdapter(dta);
gridview.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int iPosition, long l) {
        utility.logd("gridview", "selected item position:" + iPosition);
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {
        utility.logd("gridview", "nothing selected.");
    }
});
gridview.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        utility.logd("gridview", "item clicked");
    }
});

在应用程序启动后,只调用一次onNothingSelected()。当使用远程控件更改GridView上的焦点或单击任何项时,不会调用任何其他侦听器。

有人能就如何使听众发挥作用提供建议吗?

GirdView的其他所有功能都如预期一样工作。

编辑:以下是每个网格单元格的布局:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="0dp"
    android:layout_gravity="center"
    android:id="@+id/biyee_relativeLayoutRoot">

    <ImageButton
        android:id="@+id/imageButton"
        android:background="@drawable/button_background"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="snapshot"
        android:layout_gravity="center"
        android:scaleType="fitXY"
        android:adjustViewBounds="true"
        android:layout_margin="0dp"
        android:padding="10dp"
        android:src="@drawable/ic_launcher"
        android:onClick="onClick_imageButton"/>

    <LinearLayout
        android:id="@+id/linearLayoutCaption"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/black_overlay"
        android:orientation="vertical"
        android:layout_margin="10dp"
        android:padding="5dp">

        <TextView
            android:id="@+id/textViewName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:text="Name"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <TextView
            android:id="@+id/textViewModel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Model"
            android:textAppearance="?android:attr/textAppearanceSmall"/>

        <TextView
            android:id="@+id/textViewTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:text="Time"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </LinearLayout>

    <TextView
        android:id="@+id/textViewPosition"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:text="n"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_margin="15dp"/>

</FrameLayout>

编辑(2):丹尼尔努金特的 针尖,为了测试目的,我从自定义项视图布局中删除了ImageButton,OnItemSelectedListener开始完美地工作。因此,罪魁祸首是ImageButton。似乎任何可点击的对象都会毁了OnItemSelectedListener。

编辑(3):为了进行测试,我为自定义项视图使用了以下布局:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:orientation="vertical"
    android:background="@color/red">

</LinearLayout>

OnItemSelectedListener工作得很好,但是无论我是用鼠标还是用遥控器来点击一个项目,OnClickListener和OnItemClickListener都不会被调用。

EN

回答 1

Stack Overflow用户

发布于 2016-12-01 19:01:19

尝试使用OnItemClickListener而不是onItemSelectedListener

代码语言:javascript
复制
gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                //Your Logic here
        }
);

如果您实现了某种类型的选择,比如箭头或其他一些东西,onItemSelectedListener将完成这项工作。

来自developer.android.com

在选定此视图中的项时调用的回调方法。只有在新选定的位置与先前选定的位置不同或没有选定项时,才会调用此回调。 如果需要访问与所选项关联的数据,脉冲修补程序可以调用getItemAtPosition(位置)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40918075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档