CursorTreeAdapter と CheckedTextView が表示された ExpandableListActivity があります。クリックすると正常に動作します(手動で CheckedTextView を切り替える必要がありますが、これは ExpandableListView であるためです)が、アダプターがカーソルで再クエリを呼び出すと、チェックされる項目は正しいものではありません(以前と同じです)。
問題が何であるかについての手がかりはありますか?
CursorTreeAdapter と CheckedTextView が表示された ExpandableListActivity があります。クリックすると正常に動作します(手動で CheckedTextView を切り替える必要がありますが、これは ExpandableListView であるためです)が、アダプターがカーソルで再クエリを呼び出すと、チェックされる項目は正しいものではありません(以前と同じです)。
問題が何であるかについての手がかりはありますか?
これはおそらく、Android のリスト リサイクルが行われているためです。同様の問題に関する SO の質問があります: Android: Handle ListView Recycle。あなたの場合、アダプターは TextView ラベルの更新を処理するため、これらは正しく見えますが、チェックボックスの状態は気にしません。同様の問題があり、に基づいて独自のアダプターを提供することで回避しましたSimpleExpandableListAdapter
が、オーバーライドされたgetChildView
メソッドを使用して、テキストビューのコンテンツとチェックボックスの状態の両方を処理します。
このような状況では、実際に何が起こっているのかを知るために、対応する Android ソース ファイルを覗いてみるのが賢明だと思います。この場合、興味深いファイルはExpandableListView.java
(SimpleExpandableListAdapter.java
私がアダプターのベースにしたもので、あなたの場合はCursorTreeAdapter.java
)
チェックされたアイテムの状態を維持するために私の答えをチェックしてください。. チェックボックス付きの Android ExpandableListView にアクセスし、チェック状態を制御する