互いに依存している 2 つのオブジェクトの 2 つのリスナーの「同期」に苦労しています。
と scrollable があるListView list
としLinearLayout slider
ます。両方とも 内のレイアウトにありますFragment
。
リストをいくつかの項目にスクロールすると、スライダーはautoscroll
対応する位置を表示する必要があります。スライダーをスクロールするsmoothScrollToPosition
と、リストに対応する位置が表示されます。
したがって、私は
interface SliderListener {
public onPositionChanged();
}
と
interface ListViewListener {
public onListPositionChanged();
}
これらの 2 つのメソッドを共通のコントローラーに実装するだけでは (コントローラーに実装しますFragment
)、デッドロックが発生します (互いにスクロールを無限に試行し、ますます多くのイベントを生成しようとします)。
いくつかの単純なブールセマフォ変数を使用して、アクションを実行する前にその状態を確認しようとしましたが、それでも同時実行が発生します。
リスナーの使用状況を同期する適切な方法は何ですか?