Layoutmanager.FindFirstCompletelyVisibleItemPosition всегда возвращает -1

У меня есть recyclerview в моем проекте Android, который отображает медиа-содержимое в каждом представлении. То, что я пытаюсь достичь, – это то, что я могу проигрывать / приостанавливать медиа, когда я просматриваю вверх и вниз. Мне нужно получить положение адаптера полностью видимого вида. Я делаю что-то вроде этого.

В моем фрагменте действия у меня есть следующее:

layoutmanager = new LinearLayoutManager(Activity); adapter = new FeedAdapter(vid, userName, this.Context); feeditem.SetLayoutManager(layoutmanager); feeditem.SetAdapter(adapter); var onScrollListener = new XamarinRecyclerViewOnScrollListener(Activity, layoutmanager, adapter); 

Событие прослушивания прокрутки выглядит следующим образом:

 public override void OnScrollStateChanged(RecyclerView recyclerView, int newState) { base.OnScrollStateChanged(recyclerView, newState); if (newState == (int)ScrollState.Idle) { layoutmanager = (LinearLayoutManager)recyclerView.GetLayoutManager(); int firstVisiblePosition = layoutmanager.FindFirstCompletelyVisibleItemPosition(); int visible = layoutmanager.FindFirstVisibleItemPosition(); int last = layoutmanager.FindLastVisibleItemPosition(); if (firstVisiblePosition >= 0) { if (oldFocusedLayout != null) { Toast.MakeText(ctx, "Stop Video", ToastLength.Long).Show(); } } currentFocusedLayout = layoutmanager.FindViewByPosition(firstVisiblePosition); Toast.MakeText(ctx, "Play video", ToastLength.Long).Show(); oldFocusedLayout = currentFocusedLayout; } } feeditem.AddOnScrollListener(onScrollListener); 

Проблема в том, что метод диспетчера linearlayout FindFirstCompletelyVisibleItemPosition всегда возвращает -1, даже когда представление полностью видимо. Другие методы, такие как FindFirstVisibleItemPosition и FindLastVisibleItemPosition дают правильное положение вида.

Любая идея, что может быть проблемой здесь?

layoutManager.findFirstCompletelyVisibleItemPosition ()

ИЗ ДОКУМЕНТА

Возвращает положение адаптера ПЕРВОГО ПОЛНОГО ВИДИМОГО просмотра. Эта позиция не включает изменения адаптера, которые были отправлены после последнего прохода макета.

Это означает, что, по крайней мере, один вид списка должен быть полностью видимым в противном случае, он дает -1 (NO_POSITION)

ОТ ИСПЫТАНИЙ

Это будет работать и даст правильное положение …

Полностью видимый просмотр ListItem

Это не сработает и даст -1 (NO_POSITION), потому что два представления ListItem не полностью видны.

Введите описание изображения здесь

Intereting Posts
Установите нижний предел количества звезд, отображаемых в RatingBar Android Android. Сделайте часть изображения, воспроизводимого в Android. Как использовать разные версии одной и той же зависимости от градиента в разных модулях Android Studio? Какова наилучшая практика для многопоточного обработчика на Android? Как зарегистрировать тело запроса и ответа с помощью Retrofit-Android? Фрагмент андроида при вызове bitmap.recycle () Объединить несколько приложений в одном приложении Как решить Runtime error в Android bin res crunch directory? Как эффективно использовать постоянный XMPP с Android Как скопировать исходные файлы на SD-карту Обновление Android Studio 2.2: выровненный APK (zipAlign), не сгенерированный с использованием нового Gradle Plugin 2.2.0 Android-меню слайдов с обеих сторон влево и вправо Потоковая передача на Android MediaPlayer ViewPager на макете за ScrollView, не прослушивая жесты Ошибка SharedPreferences Android IOException