我正在尝试在ListViews
中同步ViewPager
个滚动位置。
作为孩子,我有ViewPager
Fragments
。每个片段都包含ListView
。我创建了一个ListViewScrollListener
接口,用它来监听每个ListView
滚动活动。当用户滚动一个ListView
时,ViewPager
中的活动片段会听取滚动事件并在ListView
上调用以下方法:
listView.setSelectionFromTop(firstVisibleItem, pixelOffset);
可悲的是,ListView
中Fragments
元素的滚动位置不会更新。当我在setSelectionFromTop
方法中使用相同的onResume()
方法时,它就像魅力一样,因此当我转换ViewPager
和Fragments
时,位置设置正确创建
我还检查了StackOverflow是否存在类似问题并尝试了以下解决方案,但没有得出正面结果:
mListView.post(new Runnable() {
@Override
public void run() {
listView.setSelectionFromTop(firstVisibleItem, pixelOffset);
}
});
我检查了setSelectionFromTop
是否被正确调用,显然是。任何想法为什么它不起作用?
正如Ne0所暗示,我还检查了在主ui线程的Fragment中运行setSelectionFromTop方法,没有任何正面结果。
getActivity().runOnUiThread( new Runnable() {
@Override
public void run() {
listView.setSelectionFromTop(firstVisibleItem, pixelOffset);
}
});
其他任何想法可能是什么?