package org.openlmis.core.view.widget;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
public final class DoubleListScrollListener implements OnScrollListener {
private ListView list1;
private ListView list2;
private DoubleListScrollListener(ListView list1, ListView list2) {
this.list1 = list1;
this.list2 = list2;
}
public static void scrollInSync(ListView list1, ListView list2) {
list1.setOnScrollListener(new DoubleListScrollListener(list1, list2));
list2.setOnScrollListener(new DoubleListScrollListener(list2, list1));
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == 0 || scrollState == 1) {
View subView1 = view.getChildAt(0);
if (subView1 != null) {
final int top1 = subView1.getTop();
View subview2 = list2.getChildAt(0);
if (subview2 != null) {
int top2 = subview2.getTop();
int position = view.getFirstVisiblePosition();
if (top1 != top2) {
list2.setSelectionFromTop(position, top1);
}
}
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
View subView1 = view.getChildAt(0);
if (subView1 != null) {
int top1 = subView1.getTop();
View subView2 = list2.getChildAt(0);
if (subView2 != null) {
int top2 = list2.getChildAt(0).getTop();
if (top1 != top2) {
list1.setSelectionFromTop(firstVisibleItem, top1);
list2.setSelectionFromTop(firstVisibleItem, top1);
}
}
}
}
}