Android-派手なListViewバックグラウンドの問題
-
05-07-2019 - |
質問
カスタマイズされたArrayAdapterによってバックアップされたListViewがあり、各アイテムには2つのLinearLayouts(1つはhead、もう1つはbody)があります。 ユーザーが行をクリックしてスライドアウトするまで、本文は非表示になります(消えます)。 2回目のクリック(頭)で、ボディが非表示になります。ただし、ユーザーが本文をクリックすると、別のアクティビティが発生します。これらはすべて問題なく動作します。問題があります:
ユーザーが体を押すと、通常のリスト項目が押されたときにオレンジ色の背景がちらつくのと同じように、アクションの視覚的な表示が必要です。 (私の理論では)onPressイベントはボディのビューによってインターセプトされ、リストアイテムによって処理されないため、デフォルトではこれを取得できません。
最初に試したのは、onPressイベントでbody.setBackground('#ff00ff')
(色を気にしない)を実行することでした。呼び出しの後に再描画がないので、それは機能しませんでした(私は疑います)その後、もう少し掘り下げて、<selector/>
ベースのバックグラウンドを使用することにしました。 body_background.xml
フォルダーでdrawable
を定義し、それを本文の背景プロパティに割り当てました。
そこで、偶数がリストで処理された場合にのみ背景が変わることに気付きました。たとえば、<item android:state_selected="true" android:drawable="@drawable/selected"/>
を設定した場合、頭を押すと-両方の要素(頭と体)の背景が変わりますが、体を押すと-何もありません。
では、私の質問を要約するために、カスタムonClickハンドラーを割り当てた場合、リスト項目の子要素の背景をどのように変更しますか?ヒントは大歓迎です
解決
OK。ここで詳細を掘り下げます。
- 現在、実装をExpandableListViewに切り替えようとしています。ExpandableListViewは、コーディングする必要がある機能を提供します(スライドするボディ)。ここで問題になるのは、空想的な<!> quot; endless <!> quot;があることです。リストの実装。ArrayAdapter#addメソッドを使用して、スクロール中にリストにアイテムを動的に追加しています(私の androidguys.comのチュートリアル)さて、
add
にはBaseExpandableListAdapter
メソッドがありません。そのため、内部配列へのアイテムの追加が機能するかどうかを確認する必要があります(機能しませんでした) ArrayAdapterの場合)おそらくExpandableListView#notifyChanged()を実行することで処理されます -
setBackgroundColor
メソッドを直接使用しているときに何も表示されないという事実は、新しいアクティビティが表示されるまですべての描画を停止するstartActivity
呼び出しへの後続の呼び出しが原因である可能性があります
PSこれはExpandableListViewに切り替えることで解決されました。そして、私は追加することができます-それは美しいです!何も発明する必要はありません