私は以下のようなリストビューアイテムを持っています
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/music_list_item_checkbox_bg"
/>
</LinearLayout>
music_list_item_checkbox_bg.xml
異なる状態に応じて異なるドローアブルを表示するセレクターです。
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:state_pressed="false"
android:state_selected="true"
android:drawable="@drawable/btn_checkbox_check_untapped" />
<item android:state_selected="true"
android:state_pressed="true"
android:drawable="@drawable/btn_checkbox_check_tapped" />
<item android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/btn_checkbox_uncheck_untapped" />
<item android:state_selected="false"
android:state_pressed="true"
android:drawable="@drawable/btn_checkbox_uncheck_tapped" />
</selector>
リストビューでアイテムを押して、アイテム内のタッチスクリーンを離れると、異なる状態に応じたドローアブルが右になります。
質問:しかし、アイテムを押して指をアイテムの外に水平に移動し(タッチポイントのXはアイテムの上部と下部の間にあります)、画面を離れると、チェックボックスのドローアブルは次の状態のままになります。押されました。(タッチポイントのXがアイテムの上下から外れている場合、状態は正しいです)。
チェックボックスに追加android:duplicateParentState="true"
して親と同じ状態にしようとしましたが、機能しません。
私は混乱しています、誰かがいくつかのアイデアを持っていますか?
編集済み
以前にアイテムにonTouchとonInterceptを実装しようとしましたが、super.onTouch(MotionEvent event)を返す場合にのみ、アクションを受け取ることができます。trueを返すだけで、シーケンスイベントが受信されますが、listviewのonItemClickは機能しませんでした。AbsListviewのonTouchコードスニペットを読んで問題を解決する方法を見つけようとすると、child.setPressed(false)を呼び出しても、child(item)のプレスステータスがfalseにクリアされないことがあります。タッチモード。
私は本当に解決策が欲しいです!!!