よーし、アプリ作者らしいことも書いちゃうぞー。

はむーんは、リストビューのアイテムをクリックするとコンテキストメニューが開くようになっています。
コンテキストメニューを開くにはopenContextMenu()を呼びます。コードはこう。

                                                                                                                                                              • -

public void onItemClick (AdapterView parent, View view, int position, long id){
openContextMenu( view );
}

                                                                                                                                                              • -

そして、アイテムを長押ししたときに別の動作をさせようと考えてListViewにロングクリックリスナーを
setしてみたところ、長押ししたときはもちろん、短クリックのときにもロングクリックリスナー
が呼ばれてしまいます。なぜか→OSのコードを追うと、openContextMenu()を呼ぶと回りまわって
長押しのルートに入っていってしまう。

どう切り抜けたか。

                                                                                                                                                                      • -

public void onItemClick (AdapterView parent, View view, int position, long id){
view.setTag(R.string.on_item_click , new Boolean(true) );
openContextMenu( view );
}

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView parent, View view, int position, long id){
Boolean b = (Boolean)view.getTag(R.string.on_item_click);
if( b != null ){
view.setTag(R.string.on_item_click,null);
return false;
}
    /* ロングクリック処理を書く */
}
}

                                                                                                                                                                      • -

onItemClick()でviewにタグを貼って、onItemLongClick()でそのタグを拾って短クリックか
ロングクリックか判断するという荒業で切り抜けた。

こんなんでいいのか・・・・・・?