Попробуйте это,
private ListView first, second;
private String check="";
String[] COUNTRIES = new String[] { "Afghanistan", "Albania",
"Algeria", "American Samoa", "Andorra", "Angola", "Anguilla",
"Antarctica", "Antigua and Barbuda", "Argentina", "Armenia",
"Aruba", "Australia", "Austria", "Azerbaijan", "Bahrain",
"Montserrat", "Morocco",
"Mozambique", "Myanmar", "Namibia", "Nauru", "NepalA",
"Montserrat", "MoroccoF",
"Mozambique", "Myanmar", "Namibia", "Nauru", "NepalB",
"Montserrat", "MoroccoD",
"Mozambique", "Myanmar", "Namibia", "Nauru", "NepalC",
};
String[] COUNTRIES1 = new String[] { "Martinique",
"Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia",
"Moldova", "Monaco", "Mongolia", "Montserrat", "Morocco",
"Mozambique", "Myanmar", "Namibia", "Nauru", "Nepal", };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
first = (ListView) findViewById(R.id.firstlist);
second = (ListView) findViewById(R.id.secondlist);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, COUNTRIES);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, COUNTRIES1);
first.setAdapter(adapter);
second.setAdapter(adapter1);
second.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
check="second";
return false;
}
});
first.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
check="first";
return false;
}
});
first.setOnScrollListener(newScrollEvent);
second.setOnScrollListener(newScrollEvent);
}
private OnScrollListener newScrollEvent = new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
if(check.equalsIgnoreCase("first")){
System.out.println("first");
if (first.getChildAt(0) != null) {
Rect r1 = new Rect();
first.getChildVisibleRect(first.getChildAt(0), r1, null);
second.setSelectionFromTop(first.getFirstVisiblePosition(),
r1.top);
}
}
else if(check.equalsIgnoreCase("second")){
if (second.getChildAt(0) != null) {
Rect r1 = new Rect();
second.getChildVisibleRect(second.getChildAt(0), r1, null);
first.setSelectionFromTop(second.getFirstVisiblePosition(),
r1.top);
}
}
}
};