7

スワイプして閉じるリストビューアダプターの作成に取り組んでいます。私の基本的な方法論は、リスト アイテムのビューを ViewPager の 2 番目のビューとしてラップし、ViewPager のアイテム変更リスナーで必要なコールバックを提供することです。苦労の末、View リサイクラーが意図したとおりに機能し、ViewHolder および ViewBinder パターンが実装されました。ListView のカスタム サブクラスを作成しなくても、ViewPager がスクロールされている間、ListView がタッチ イベントを引き継がないようにすることさえできました (アダプターからすべて実行できます)。

問題が発生しているのは、セレクターとOnItemClickListenerを機能させることです。ListView のソースを見た後、ViewPager の hasFocusable() メソッドをオーバーライドして常に false を返すようにすることで (後で子ビューからこの値を取得します)、これらを再度有効にする必要があるように見えました。残念ながら、そうではありません。回避策を試しましたが、setDecendantFocusability()まだ行き詰っています。

最大のモジュール性を提供するために、可能であれば ListView を拡張する必要は避けたいと思います。同様の理由で、ViewPager の背景にセレクターを追加したくありません (開発者が ListView のセレクターを変更した場合、これは反映されません)。基本的に、ListView と子ビューの間で ViewPager コードを透過的にしようとしています。何か案は?

4

1 に答える 1

7

各リスト項目をビューページャーにして、スワイプによる削除を実装できると言っているのですか? もしそうなら...いいえいいえ、これはビューページャーの目的ではありません。最初に申し訳ありませんが、リスト内のアイテムとして使用することを意図していません。次に、スワイプして削除するのではなく、ビューを切り替えるためのものです。

残念ながら、これを行う方法を示すサンプル コードはありませんが、プラットフォームの通知ペインの実装または最近のアプリを見て、アイデアを得ることができます。

于 2011-12-17T23:04:47.357 に答える