0

私の Android アプリケーションでは、onCLickListener を実装するリスト内の行を管理するためのカスタム ArrayAdapter があります。

onClick() メソッドで、コンテキスト メニューを表示します。

     public class MyAdapter extends ArrayAdapter<MyClass> implements
                                                                OnClickListener  {

    public void onClick(View v) {

            v.showContextMenu();
    } 
}

メインの List Activity クラスでは、別の Activity を開始する onLongListItemClick() メソッドをオーバーライドします。

リスト内の行をクリックすると、コンテキスト メニューが正しく表示されますが、1 秒後に onLongListItemClick() も実行されます。これを止める方法は?

ありがとう!

4

1 に答える 1

0

あなたのコメントの後、私は解決策があると思います。コンテキスト メニューに行を使用しないonClickでください。チェック ボックスのアダプターにクリック リスナーを設定し、そこからコンテキスト メニューを表示します。そうすれば、onLongListItemClick.

チェックボックスと行の両方をクリック可能にするには、これを XML のチェックボックス定義に追加します。

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

編集

これでうまくいくはずです:

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
        if(isChecked){
           View v = buttonView.getParent();  // get the parent row view containing the checkbox
           v.showContextMenu();     // show the context menu
        }
   } 
} 
于 2012-06-15T16:01:13.360 に答える