そのような機能を実装することも考えましたが、まだ実装していません。したがって、私が提供できる唯一のことは、その問題にどのように取り組むかについてのいくつかのアイデアです. 最終的にコードを書いたら、ここに投稿します。
- 必要なメイン クラスは、
ListAdapter
(ArrayAdapter、SimpleCursorAdapter など) を拡張するカスタム アダプターです。
- アダプターは、View.OnTouchListener をそのすべてのビューに適用します。
- そのリスナーが水平スクロールを検出するたびに
dx
、呼び出しますconcernedView.offsetLeftAndRight(dx)
(ビューをドラッグ可能にします)。もちろん、アダプターはビューの現在の水平オフセットを保存する必要があります。ユーザーがビューをドラッグしていて画面から指を離すと、touchListener もこれを検出し、スライド バック アニメーションを開始します。現在のオフセットを使用してアルファ値を計算することもできるため、画面の境界に近づくとビューがフェードアウトします。
- 最終的に 1 つのリスト エントリがユーザーによって却下された場合、それは少し厄介になり、次のアクションをどのように実装するのかまだわかりません: リストの内容を更新する必要があります (またはアダプタは却下されたエントリを無視する必要があります)。却下されたビューよりも下にあったビューは、ギャップを埋めるために上に移動する必要があります。ListView に新しいコンテンツをロードさせることはうまくいくと思いますが、それはギャップを即座に埋めます。それを避けるために、関連するすべてのビューを元の位置 (まだギャップがある場所) から現在の位置 (ギャップが埋められる場所) に移動させるアニメーションを開始します。
これらは、一部の人々が問題に取り組み始めるのに役立つかもしれない問題に関する私の考えのほんの一部です. 私が言ったように、私はおそらく将来いつかそれを実装するつもりであり、もちろん私はここにコードを投稿します.
コメントでフィードバックをいただければ幸いですが、私のアイデアのすべての側面を徹底的に説明したくはありません。それには時間がかかりすぎます ;)