0

左スワイプを処理するために GestureDetector を使用するリストビューがあります。各項目について、以下のようにレイアウトします。

[FrameLayout]
    [LinearLayout] hidden_menu [/LinearLayout]
    [LinearLayout] main_layout [/LinearLayout]
[/FrameLayout]

、onTouchListenerを処理します。main_layout を右に移動すると、hidden_​​menu が表示されます[サンプル画像]。他のアイテムを右に移動するか、リストビューを上に移動または下に移動すると、ObjectAnimator (x) を使用して古い (または開いた) アイテムの hidden_​​menu を非表示にし、最後にアニメーションで main_layout.invalidate() を呼び出します。

私の問題は、リストビューをスクロールするときに、ViewHolder パターンで行レイアウトを再利用するため、新しい行が間違ったレイアウトになることです (一部の hidden_​​layout が表示されます)。

1) getView() が呼び出されたときに新しいアイテムを更新するアイデアはありますか?

2) または、最初のようにアニメーション アイテムを更新する方法

皆さんが私を理解してくれることを願っています!

よろしくお願いします!

4

1 に答える 1

0

私の場合、解決策を見つけました:

if(holder.mHiddenMenu.getLeft() != 0) {
    holder.mHiddenMenu.setTranslationX(0);
}
于 2015-04-15T02:18:04.663 に答える