5

アイテムをクリックするとビューが左にスライドするListViewが1つ必要です。

ので、私は持っています:

listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            arg1.startAnimation(openAnimation);
        }
    });

ただし、アニメーションは、クリックされたアイテムではなく、リスト内の別のアイテムに適用されました。同時に複数のアイテムに発生することがあるため、動作はランダムに見えます。

私が推測したように、これはアダプタがアイテムを作成するためにビューを再利用する方法によるものです。アダプタのgetViewメソッドを変更して、呼び出されるたびに新しいビューを拡張しました。そうすれば、アニメーションはもう起こりません。

これを解決する方法はありますか?アニメーションをアダプタ内に移動しようとしましたが、リストビューの他のアクションと関連付けることができません。

最終的には、アイテムをクリック可能にしたいのですが、左/右にスワイプすると削除ボタンが表示されます(iOSの削除動作)。私はここで間違った方向に進んでいますか?Androidは通知バーでスワイプを実装して削除できるため、これは可能です。

4

1 に答える 1

1

このスレッドもチェックすることをお勧めします。

この種の動作に合わせてアダプターを変更しなくても、これが可能だとは思いません。私が理解していることですが、異なるListView行でスワイプジェスチャを認識するコードを実装することに問題はありません。アニメーションでのみ、対応する行でこのジェスチャに従う必要があります。

通常の行と削除する行の少なくとも2つの行タイプに合うようにアダプターを書き直します。アダプタの「getView()」メソッドでは、通常のビューのconvertViewのみを再利用する必要があります。削除する行は再利用しないでください。これにより、1つの行をアニメーション化しても他の行が変更されることはありません。通常の行をクリックしたら、最初にクリックした位置の行が削除対象のタイプであることをアダプタに通知し、.notifyDatasetChanged()を呼び出してから、その行のアニメーションを開始する必要があります。

于 2012-05-31T05:06:01.510 に答える