スワイプして閉じるリストビューアダプターの作成に取り組んでいます。私の基本的な方法論は、リスト アイテムのビューを ViewPager の 2 番目のビューとしてラップし、ViewPager のアイテム変更リスナーで必要なコールバックを提供することです。苦労の末、View リサイクラーが意図したとおりに機能し、ViewHolder および ViewBinder パターンが実装されました。ListView のカスタム サブクラスを作成しなくても、ViewPager がスクロールされている間、ListView がタッチ イベントを引き継がないようにすることさえできました (アダプターからすべて実行できます)。
問題が発生しているのは、セレクターとOnItemClickListener
を機能させることです。ListView のソースを見た後、ViewPager の hasFocusable() メソッドをオーバーライドして常に false を返すようにすることで (後で子ビューからこの値を取得します)、これらを再度有効にする必要があるように見えました。残念ながら、そうではありません。回避策を試しましたが、setDecendantFocusability()
まだ行き詰っています。
最大のモジュール性を提供するために、可能であれば ListView を拡張する必要は避けたいと思います。同様の理由で、ViewPager の背景にセレクターを追加したくありません (開発者が ListView のセレクターを変更した場合、これは反映されません)。基本的に、ListView と子ビューの間で ViewPager コードを透過的にしようとしています。何か案は?