1

Android プログラマーとしてキャリアをスタートしたばかりで、現在サンプル コードと API の例に大きく依存しています。この api exampleを使用して、アイテムの展開可能なリストを作成しました (この例では ExpadableListView を使用していないことに注意してください)。

この例で遊んでいるときに、テキストと同時に表示されて消える別のウィジェットを追加しようとしました (サンプル コードの mDialogue)。これは別の TextView でうまく機能しますが、ボタン ウィジェットを追加しようとするとすぐに機能しなくなりました。リストは最初のクリックで展開され、非表示の TextView と Button が表示されますが、それ以上クリックしても消えません。ただし、ボタンはクリック可能であり、onClick リスナーを設定してボタンのテキストを前後に変更することができました。

クリック可能なリスト項目内にクリック可能な項目を含めることはできないのでしょうか? それとも何らかの回避策がありますか?ExpandableListView を使用すると問題は解決しますか?

4

1 に答える 1

4

によって制御される ListView 内でフォーカスを処理する方法には、2 つのオプションがありますListView#setItemsCanFocus(boolean)。リスト アイテム内の個々のビューにフォーカスして、ユーザーがリスト アイテム全体ではなく個別に操作できるようにする場合は、それを passing と呼びますtruefalseがデフォルトの動作です。

ListView がアイテムのフォーカスとクリックを管理するデフォルトの動作は、基本的に、相互作用の観点からアイテム全体が単一のユニットとして機能する一般的なケースのショートカット/最適化ですが、そのレイアウトは複雑になる場合があります。ListView にアイテムがフォーカスできることを伝えると、この特別な動作が無効になり、リスト アイテム内のビューでイベントを処理する従来のメカニズムを使用する必要があります。(リスナー、オーバーライドされた*メソッドなど)

しかし、ListView がフォーカス可能なアイテム用に設定されていないのに、リスト アイテムがクリックされなくなるのはなぜでしょうか? falseリスト アイテム ビューがから返された場合、ListView はアイテム クリック イベントのみを生成しますView#hasFocusable()。これは、アイテム クリック イベントを受け取りたい場合、リスト アイテムの子をフォーカス可能にできないことを意味します。ボタンが表示されるとすぐに、リスト アイテムにはフォーカス可能な子があり、リスト アイテムのクリック イベントを受信しなくなります。

于 2010-06-01T01:27:55.423 に答える