Android - gridView onItemClick



嗨,我的网格视图有奇怪的问题。我设置了这个项目ClikListener,但它不起作用。 观点的结构是这样的:GridView -> LinearView with ImageView

当我将项目点击监听器设置为如下所示时,它不起作用:

GridView board;
board.setAdapter(boardAdapter);
board.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Log.d("CLICK", "onClick");
}
});

这不起作用,我的控制台很清楚。

当我在 imageView 的每个项目(在网格视图的每个项目上)上分别实现侦听器时GridViewAdapter -> boardAdapter一切正常。

Adapter getView()中工作代码片段

imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("CLICK", "onClick");
}
});

为什么我不能将侦听器应用于整个网格视图及其项目?我需要在类中具有字段 gridView 和 gridViewAdapter 的侦听器,而不是在 gridViewAdapter 中?

我在堆栈溢出中搜索,但我无法做到。请帮忙

代码中的一个问题是注释@Override缺失。

board.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int     position, long id) {
Log.d("CLICK", "onClick");
}
});

如果仍然不起作用。然后,您的网格项的任何子视图也可能在侦听单击事件。 如果您了解android触摸框架的均匀处理程序,那么您可能会理解我的观点。否则,知道android Touch Framework如何工作会非常好。 你可以在这里了解这一点。

实现的方法缺少@Override注释。匿名内部类也应该从适配器视图引用。请参阅下面的示例代码。

board.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Log.d("CLICK", "onClick");
}
});

尝试将这些添加到GridView项目的layout.xml

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

还要确保您的适配器返回该方法的true

isEnabled(int position)

最新更新