2012-04-04 14 views
5

アイテムをクリックすると、ビューが左にスライドするリストビューが1つあります。クリックしたときにListViewのアイテムをアニメーション化する方法は?

だから私はしている:

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

はしかし、アニメーションではなく、クリックされた1のリストに別の項目に適用されます。この現象は、同時に複数のアイテムに起こることがあるため、ランダムであるようです。

これは、アダプターを再利用する方法が原因であると思われました。アイテムを作成するためのビューです。私はアダプタのgetViewメソッドを変更して、呼び出されるたびに新しいビューを展開しました。その後、アニメーションはそれ以上発生しません。

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

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

+0

「iOS削除動作」いいえいいえいいえ! AndroidはiOSではありません! iOSデザインパターンは使用しないでください。 Androidユーザーの期待とAndroidユーザーエクスペリエンスNOTとiPhone体験 – slayton

+0

私はあなたの懸念を理解しています。私はこの考え方に全く反対しています。しかし私はここで決定を下す人ではない。しかし、あなたはそれを認めなければなりません、削除するためにスワイプは、Android上にあります。実装はそこにあり、ちょうど異なるプレゼンテーションです。 – RobGThai

+0

基本的なlistviewクラスでこのスワイプがビヘイビアを削除するのをサポートしていないため、通知ウィンドウにリストビューのカスタム実装がある可能性があります – slayton

答えて

1

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

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

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

+0

その行のアニメーションを開始するにはどうすればよいですか?私はビューですv = inflater.inflate(R.layout.list_view_custom、null);リスナーでは、 finalアニメーションのアニメーション= AnimationUtils.loadAnimation(parent.getContext()、R.anim.fade_in_expand); v.startAnimation(アニメーション); しかし、何も起こりません。 – MinceMan

関連する問題