Я пытаюсь прокрутить 2 списка одновременно, используя метод setSelectionFromTop () из API ListView. Вот мой макет:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/list_1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"/>
<ListView
android:id="@+id/list_2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"/>
</LinearLayout>
и моя активность:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ListView listView1 = (ListView)findViewById(R.id.list_1);
listView1.setAdapter(new ListAdapter());
ListView listView2 = (ListView)findViewById(R.id.list_2);
listView2.setAdapter(new ListAdapter());
listView2.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
View v = view.getChildAt(0);
final int top = (v == null) ? 0 : v.getTop();
listView1.setSelectionFromTop(firstVisibleItem, top);
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
});
}
Все работает отлично, а прокрутка плавная. Однако, когда я обертываю list_1
в xml-файле в LinearLayout, синхронизированная прокрутка нарушается. Это ошибка или я забыл что-то сделать?
Примечание. Источники данных ListView взяты из учебника ListView на сайте разработчика Android, и оба ListView используют экземпляры одного и того же адаптера. Предположим, что я правильно реализовал шаблоны использования адаптеров. Кроме того, я попытался использовать RelativeLayout и даже жестко кодировать значения пикселей в. У меня все еще остается та же проблема.