0

是否可以在空的gridview或gridview的空白处处理longclick?我尝试使用如下所示的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    GridView gridview = (GridView) findViewById(R.id.gridView1);

    gridview.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            Toast.makeText(MainActivity.this, "does it works?", Toast.LENGTH_SHORT).show();
            return false;
        }
    });
}

但是,不幸的是,它不起作用。有人可以告诉我,我怎样才能在一个空的 gridview 上处理这个事件?谢谢

我还附上了我的 xml 文件:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="-5dip"
android:orientation="vertical" >
<GridView
        android:id="@+id/gridView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:longClickable="true"
        android:layout_weight="1"
        android:numColumns="3" >
    </GridView>

4

3 回答 3

0

GridView 由从适配器创建的视图组成。如果要添加 LongClickListener,则应使用 OnItemLongClickListener。我认为在 GridView 本身中使用 LongClickListener 没有任何用处。

于 2013-08-10T02:37:29.767 回答
0

视图为 NULL,您可以在哪里 setXXXListener ?所以它不能。

于 2013-08-10T02:53:34.193 回答
0

让gridview 监听" OnTouchListener",并使用aGestureDetector来处理onTouch事件。onLongPress最后在 " " 方法中做你想做的事。

另外,为了避免 和 之间的冲突onLongPressonItemLongclick我们可以检查是单击的项目还是长按的空白处。

int itemPosition = mGridView.pointToPosition((int)event.getX(), (int)event.getY());,如果 itemPosition == -1 ,则表示空的地方。

于 2014-11-29T05:32:25.557 回答