@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
String title = rightListAdapter.getItem(firstVisibleItem).toString();
int section = leftListAdapter.indexOf(title);
if (section == -1) return;
leftListView.setItemChecked(section, true);
leftListView.smoothScrollToPosition(section);
}
但是呢出现了一个问题,当右边的第一个条目为商品类型时,左边的ListView不能滑动,或者说是滑动了,但是又被定位到右边商品类型所对应的左边的位置,打断点发现,即使触摸区域在左边的ListView范围,还是会走右边ListView的onScroll()方法。语言表达可能不准确,有兴趣可以自己试一下。我的解决方法呢就是设置一个标志位,当右边的ListView的滚动状态为停止的时候就不去执行onScroll()里的代码。所以代码就变成了这样。
rightListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
shouldSet = false;
} else {
shouldSet = true;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (shouldSet){
String title = rightListAdapter.getItem(firstVisibleItem).toString();
int section = leftListAdapter.indexOf(title);
if (section == -1) return;
leftListView.setItemChecked(section, true);
leftListView.smoothScrollToPosition(section);
}
}
});
好了 就是这样!