問題タブ [android-contextmenu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
527 参照

java - ContextMenu でテーブル行データを取得する

さて、私はしばらくの間、投稿を閲覧してこれを理解するのに苦労してきましたが、まだ実行可能なものに出くわしていません.

これは、テーブルのコードの一部です。

そしてコンテキストメニュー:

基本的に、選択した(長押ししてコンテキストメニューを開いた)テーブル行のテキストビューで値を取得する必要があります。

アイデアや提案はありますか?

助けていただければ幸いです。

0 投票する
2 に答える
8178 参照

android - ListView アイテム内のボタンで PopupMenu をトリガーする

メニューの種類

コンテキスト メニューとポップアップ メニューの違いを概説することから始めましょう (ここから取得)。

  • PopupMenu は、Viewに固定されたモーダル メニューです。

  • コンテキスト メニュー [特にフローティング コンテキスト メニューについて話している] は、UI の特定の項目またはコンテキスト フレームに影響を与えるアクションを提供します。任意のビューにコンテキスト メニューを提供できますが、ほとんどの場合、ListView、GridView、またはユーザーが各項目に対して直接操作を実行できるその他のビュー コレクション内の項目に使用されます。

ガイダンスとして、ドキュメントでは用途を区別しています: - PopupMenu: "特定のコンテンツ (Gmail のメール ヘッダーなど)に関連するアクションにオーバーフロー スタイルのメニューを提供する..." - ContextualMenu: "選択したコンテンツに影響するアクションの場合... "

私はPopupMenuの視覚的な外観と相互作用を求めています。

私のセットアップ(および目標)

各項目の右側にボタンがある ListView があります。

各 ListItemを保持しながらonItemClick、ボタンを活用して をトリガーしたいと思いますPopupMenu

のアクションは にPopupMenuリストされているmy_menu.xmlため、メニューの各インスタンスの唯一の違いは、クリックされた項目です。

私が試したこと

この投稿に従って、 for each ボタンを追加するためにオーバーライドを試みましgetView()た。結果は矛盾していました。すべてのクリックが登録されたわけではありません (おそらくリサイクルが原因です - 私はまだこの修正を試していません)。ListAdapterOnClickListener

また、リスト項目が長押しされたときにのみトリガーされることを除いて、非常に簡単なコンテキスト メニューを追加しようとしました。

getView()メソッドは進むべき道ですか、それとももっと簡単なものがありますか?

私のリストビューには、Play Music のプレイリストの各トラックと同様に、アイテムごとにミニ オーバーフロー ボタンがあります。オーバーフロー ボタンをクリックすると、各アイテムの PopupMenu が表示されます。長押しは何もしません。

私はそれが欲しいのですが、方法がわかりませんか?メニュー ページでは、個々のビューのポップアップ メニューを有効にする方法についてのみ詳しく説明しています。

registerForContextMenu(ListView lv)ListView全体に適用できるのは私が見た唯一のものですが、それはリスト全体の長押しでのみ機能するようです。そのイベントをリスト項目の特定のビューのクリックにフックする方法はありますか (リスト項目の残りのリスト項目のクリックを維持しながら)?

onClickListenerここで説明されているようにを設定しようとしましgetView()たが、PopupMenu がぎこちなく感じられ、すべてのクリックが毎回登録されるわけではありません (常に一貫性がありませんでした)。

更新 - getView() を再度オーバーライドして

StacksCursorAdapter を作成するときに、フィールドとして格納されている StackViewFragment のインスタンスを渡します (これにより、クリック リスナーとしてビューに割り当てることができます)。

ViewHolderのクラスですpublic final ImageView miniOverflow

StacksCursorAdapter (SimpleCursorAdapter を拡張):

StackViewFragment (ListFragment を拡張し、View.OnClickListener を実装):

stack_list_item.xml:

このジャンクションでの問題は、(ボタン上で) 登録するためのクリックを取得するために、ときどき数回クリックする必要があることです。これはスクロールしないため、ビューのリサイクルとは関係ありません。

結論(正しいとマークされたeskimoapps.comによる解決策)

したがって、タッチ ターゲットが期待していた場所にないことを除いて、複数のクリックに問題はありませんでした。ミニ オーバーフローに使用していた画像アセットは右に重み付けされています (3 つの点が画像の右端近くにあるように)。タッチ ターゲット) は、半分の時間 (facepalm)を見逃していたことを意味します。

getView()上で示したオーバーライドは問題なく機能しているようで、実際にgetView()は、必要な場合にのみ OnClickListener を設定することでさらに変更できます (ただし、タグの更新は、新しく作成されたビューだけでなく、すべてのビューに対して行う必要があります)。 :

0 投票する
2 に答える
29747 参照

android - リストビューアダプタのクリックボタンでメニューコンテキストAndroidを開くには?

リストビューアダプタのクリックボタンでメニューコンテキストAndroidを開くには?

私は自分のコードを試しましたが、メニューコンテキストを表示しませんでした.

コード

それがどのように機能するか教えていただけますか?

0 投票する
1 に答える
5908 参照

android - 複数の項目が選択されている場合、コンテキスト アクション バー (CAB) の項目を動的に非表示にする

長いクリックで CAB を表示する listActivity があります。複数の項目が選択されている場合、メニュー項目の 1 つを非表示にしたいと考えています。

で選択したアイテムの数を追跡していonItemCheckedStateChanged()ます。ただし、この機能からアイテムを削除するためのメニューにアクセスできません。以下のコードのコメントを参照して、私が何をしようとしていたかを理解してください。単純なコアの理解が欠けているように感じます...以下のコードはonCreate()関数から呼び出されます。

そして私のメニューは…

0 投票する
2 に答える
2029 参照

java - Android コンテキスト メニューが表示されない

私の問題は、説明にあるように、ユーザーが「長押し」してもコンテキスト メニューが表示されないことです。私が置いた場所にあるかもしれないと感じていregisterForContextMenuます。
これが私のMainActivityです:

0 投票する
1 に答える
80 参照

java - ContextMenu に単純なエラーがあります。誰か解決してくれませんか?

以下に示すように、アイテムのリストに対してコンテキスト メニューを機能させようとしていますが、アイテムがクリックされたときにリスト名にリンクする方法がわかりません。>>>>> の行は、私が間違っていると思う行です。誰かが私が間違ったことを見てもらえますか? ここに私の Main_Activity があります:

0 投票する
1 に答える
71 参照

android - ContextMenu からアイテムをデータベースに保存

私はこの問題で立ち往生しており、これ以上先に進むことができません。だから、誰かがここで私を助けてくれることを願っています。

問題 ContextMenu と onLonghold があり、ListView のアイテムをローカル データベースに追加したい。しかし、オブジェクトはこのような配列です


このようにするにはどうすればよいですか:

それで、すべての文字列をデータベースの右の列に追加できますか?

これが今まで持っていたもの