Как синхронизировать две позиции Listview

У меня есть два ListViews . Есть ли способ синхронизировать позицию ListViews при прокрутке любого из списков. Im реализует AbsListView.OnScrollListener , регистрируясь в ListView . Когда прокручивается ListView , onScroll() метод onScroll() OnScrollListener , затем я вызываю `smoothScrollToPosition () '. Но он работает правильно. Может ли кто-нибудь предоставить мне какой-нибудь пример кода для этого?

Вот пример рабочего кода того, что предлагает nininho

Основная деятельность

 public class MainActivity extends Activity { public static String[] Cheeses = new String[] { "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi", "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre", "Allgauer Emmentaler", "Alverca", "Ambert", "American Cheese", }; ListView list1; ListView list2; boolean isLeftListEnabled = true; boolean isRightListEnabled = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Cheeses); list1 = (ListView) findViewById(R.id.list1); list1.setAdapter(adapter); list2 = (ListView) findViewById(R.id.list2); list2.setAdapter(adapter); // IF YOU DO NOT OVERRIDE THIS // ONLY THE ONE THAT IS TOUCHED WILL SCROLL OVER list1.setOverScrollMode(ListView.OVER_SCROLL_NEVER); list2.setOverScrollMode(ListView.OVER_SCROLL_NEVER); list1.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // onScroll will be called and there will be an infinite loop. // That's why i set a boolean value if (scrollState == SCROLL_STATE_TOUCH_SCROLL) { isRightListEnabled = false; } else if (scrollState == SCROLL_STATE_IDLE) { isRightListEnabled = true; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { View c = view.getChildAt(0); if (c != null && isLeftListEnabled) { list2.setSelectionFromTop(firstVisibleItem, c.getTop()); } } }); list2.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == SCROLL_STATE_TOUCH_SCROLL) { isLeftListEnabled = false; } else if (scrollState == SCROLL_STATE_IDLE) { isLeftListEnabled = true; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { View c = view.getChildAt(0); if (c != null && isRightListEnabled) { list1.setSelectionFromTop(firstVisibleItem, c.getTop()); } } }); } } 

XML

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:splitMotionEvents="true"> <ListView android:id="@+id/list1" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" /> <ListView android:id="@+id/list2" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> 

Если позиция видна smoothScrollToPosition () не будет прокручиваться. Вы можете использовать scrollTo или scrollBy в другом списке, который не прокручивается на данный момент, но будьте осторожны, чтобы не вводить рекурсию с каждым списком, вызывающим прокрутку другого.

Intereting Posts
IllegalStateException: получить полевой слот из строки 0 col -1 не удалось TextToSpeech.setEngineByPackageName () ничего не устанавливает Как разрешить недопустимую подпись SHA1 при подписании приложения Android? Может ли ListView содержать фрагменты Как получить продолжительность видеофайла? Затухание в анимации при загрузке изображения Использование Picasso Retrofit 2: @FormUrlEncoded с полями по умолчанию Как программно выбирать между Bluetooth и телефонной трубкой для мультимедийного аудио МАНИФЕСС СМЕРТЬ: Можно ли увидеть смешанный манифест? OnKeyListener не работает на виртуальной клавиатуре Android: если маркеры перекрываются друг с другом на карте, то событие click запускается для последнего скрытого Как я могу использовать OnSeekBarChangeListener SeekBar для поиска определенной точки в объекте MediaPlayer? Android SQLite Query – получение последних 10 записей Создание ярлыка для любого приложения на рабочем столе Как запускать приложения для Android в моем приложении на Android?