2011-08-05 10 views
1

私の場合、私はListViewを持っています。このフォルダには、フォルダと画像の2種類のビューが含まれています。フォルダを長押しすると、「フォルダを入力する」と「フォルダをブックマークする」の2つの項目を持つContextMenuが表示され、画像の場合は「表示」と「削除」のあるContextMenuが表示されます。コンテキストメニュー項目のクリックコールバックはどのようにカスタマイズできますか?

通常、onContextItemSelectedActivityに上書きし、スイッチケース内にすべてのメニュー項目IDをリストする必要があります。しかし、画像上のフォルダやアクションのアクションは、まったく関係のないものです。それらの2つ(またはそれ以上)のものを1つの関数に入れるのは奇妙ですか?

onContextItemSelectedを台無しにするのではなく、各コンテキストメニューにコールバックハンドラを設定する方法はありますか?アドバイスをいただければ幸いです。

+0

はカスタムListAdapterを使用していますか?そこにコンテキストメニューのリスナーを置くことは可能ですか?私は前にこれをやっていないので、これをコメントとして提案していますが、それが私が最初に考えるものです。 – aha

+0

@aha申し訳ありませんが、 'ListAdapter'はそれをサポートしていないようです。 – neuront

答えて

3

私は、ContextMenuを使用することは、柔軟性も便利な決定でもないと思います。

はい、1つの方法で異なるアクションを処理するのは奇妙なので、ContextMenuの代わりにAlertDialogsを使用する方が良いかもしれません。これを見てください: http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList

コンテキストメニューのように見えますか?要素のOnLongClickListenerまたはAdapterView.OnItemLongClickListener(ListViewの場合)にダイアログを表示でき、DialogInterface.OnClickListenerでアクションを処理できます。

はまた、おそらくそれはあまりにもあなたのために参考になる、私は尋ねた質問を見て:How to create dialog that looks exactly like ContextMenu?

0

onCreateContextMenu()-メソッドでは、渡されたViewパラメータをチェックすることで、フォルダまたはイメージがクリックされたかどうかを判断できます。

その後、フォルダとメニュー(メニューごとに異なるXMLファイル)用に別々のメニューを作成し、それを膨張させることができます。

onContextItemSelected() -methodでは、可能なすべてのエントリがロードされているかどうかを確認するだけです(どのメニューが読み込まれているかはわかりません)。あなたは4つの異なる可能なメニューアイテムしか持っていないので、これは悪くないでしょう。

+0

それは私がやったことです。実際のプロジェクトでは、「email it」、「picasaにアップロード」など10項目以上があります。T_T – neuront

+0

それがもっと明確になるかどうかわかりません... –

関連する問題