0

空のグリッドビューまたはグリッドビューの空の場所でロングクリックを処理することは可能ですか? 以下に示すコードを使用しようとしました:

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;
        }
    });
}

しかし、残念ながら、それはうまくいきません。空のグリッドビューでこのイベントを処理するにはどうすればよいですか? ありがとう

私の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

ビューはNULLで、XXXListenerを設定できますか? だからできません。

于 2013-08-10T02:53:34.193 に答える
0

gridview に " OnTouchListener" をリッスンさせ、a を使用しGestureDetectorてイベントを処理しonTouchます。最後に、" onLongPress" メソッドで必要なことを行います。

さらに、 と の間の競合を避けるためにonLongPressonItemLongclickアイテムがクリックされたのか、それとも空白の場所が長押しされたのかを確認できます。

int itemPosition = mGridView.pointToPosition((int)event.getX(), (int)event.getY());itemPosition == -1 の場合、空の場所を意味します。

于 2014-11-29T05:32:25.557 に答える
0

GridView は、アダプターから作成されたビューで構成されます。LongClickListener を追加する場合は、OnItemLongClickListener を使用する必要があります。GridView 自体で LongClickListener を使用することの有用性はないと思います。

于 2013-08-10T02:37:29.767 に答える