我正在为两个相互依赖的对象的两个侦听器“同步”而苦苦挣扎。
假设我们有一个ListView list
和一个可滚动的LinearLayout slider
。两者都在一个布局中Fragment
。
当我将列表滚动到某个项目时,滑块应该autoscroll
显示相应的位置。当我滚动滑块时,列表应该smoothScrollToPosition
并显示相应的位置。
因此,我有
interface SliderListener {
public onPositionChanged();
}
和
interface ListViewListener {
public onListPositionChanged();
}
如果我只是在一个通用控制器中实现这两个方法(我在一个控制器中实现它们Fragment
),那么就会出现死锁(它们无休止地尝试相互滚动并生成越来越多的事件)。
我尝试使用一些简单的布尔信号量变量并在执行操作之前检查它的状态,但它仍然会导致并发。
同步监听器使用的正确方法是什么?