データベースを使用してデータを表示するリストがあります。ユーザーが各リスト項目で実行できる操作がいくつかあります。ユーザーが長押しを使用して可能な操作のリストを表示するコンテキスト メニューを実装する代わりに、ユーザーがタップできるように各項目にボタンを追加したいと考えています。ボタンを押して操作してください。リストは潜在的に大きくなる可能性があり、各リスト項目の各ボタンにリスナーをアタッチするのはやり過ぎなので、Javascript プログラマーがイベント バブリングで行うこと、つまり、単一のハンドラーをリスト全体のような最上位要素にアタッチし、クリックイベントがそこに泡立ちます。どうすればこれを行うことができますか?
1 に答える
1
View.OnClickListener.onClick()はバブルしないため、提案したソリューションは機能しません。
OTOH、View.OnTouchListener.onTouch()はバブリングするため、これを使用できる可能性がありますが、クリックを検出するには MotionEvent のダウン/アップを手動で処理する必要があります。
その上、多くのボタンを作成する場合、特にすべてのボタンに同じメソッドを登録できるため、onCLick ハンドラーを追加するとオーバーヘッドが大きくなります。
あなたがやろうとしていることは、時期尚早の最適化のように聞こえます。対処する前に、ユーザーに影響を与える実際のオーバーヘッドがあることを確認してください。
于 2011-02-18T22:54:20.540 に答える