Intereting Posts
Заголовки ListView без разделителей элементов списка Ошибка при ожидании устройства: тайм-аут после 300 секунд, ожидающий выхода эмулятора GetLocationOnScreen возвращает старую позицию после вращения Android не может найти мой метод onClick Невозможно извлечь скрытый показатель для Android KeyStore Как импортировать проект библиотеки eclipse из проекта github в android studio? Приложение не запускается в визуальном студийном эмуляторе для Android в visual studio 2015 Сделать определенную деятельность как корневую активность в стеке Android SeekBar thumb получает обрезание / обрезание NotifyDataSetChanged vs setAdapter Повторная запись Zip после Gradle Plugin v0.13.1 PANIC: Не удается найти путь к системе AVD. Пожалуйста, определите ANDROID_SDK_ROOT Вид нижней навигации с пользовательским элементом (actionLayout) Наложение или скрыть панель инструментов при выборе копии / выреза Неявное «Отправить» после нажатия «Готово» на клавиатуре в последнем EditText

Эспрессо: прокрутка Recyclerview до конца

Есть ли способ прокрутить до конца recyclerview с помощью Espresso?

Есть элемент с текстом, скажем, «Текст XYZ», а recyclerview имеет id recycler_view. Этот элемент является последним элементом просмотра ресайклера.

Я пытался

onView(withId(R.id.recycler_view)).check(matches(isDisplayed())).perform(RecyclerViewActions.scrollTo(withText("Text XYZ")),click()); 

Но это не работает. Есть идеи?

Solutions Collecting From Web of "Эспрессо: прокрутка Recyclerview до конца"

RecyclerViewActions.scrollTo() соответствует ItemView ViewHolder , который накачивается в onCreateViewHolder() адаптера. И для того, чтобы scrollTo() работал, вам необходимо предоставить совпадение, которое однозначно идентифицирует ItemView .

Ваш текущий помощник сообщает эспрессо, чтобы перейти к ViewHolder, который был завышен с помощью TextView как itemView . Что может случиться, но обычно у вас есть действие ViewGroup происходит там, чтобы ViewGroup держателей вида так, как вы хотите, чтобы они выглядели.

Если вы измените свой scrollTo() Matcher, hasDescendant(withText("Text XYZ")) для учета всех вложенных макетов (если их несколько).

Также имейте в виду, так как вы также пытаетесь щелкнуть элемент – вы не можете сделать это в той же функции perform() потому что он отправит клик на текущий ViewInteraction , который в этом случае будет RecyclerView с идентификатором R.id.recycler_view . Выполнение этого же действия просто кликает по середине на RecyclerView , а не на элемент, который вы прокрутили.

Чтобы решить эту проблему, вам понадобится еще один onView() с помощью соединителя, который вы использовали для прокрутки к элементу или с помощью RecyclerView.actionOnItem() .

В случае другого onView() hasDescendant(withText("Text XYZ")) выйдет из строя, потому что он найдет всех родителей этого TextView (viewholder, recyclerview, viewgroup, который содержит recyclerview и т. Д.), Поскольку они У всех есть этот конкретный потомок. Это заставит вас сделать более точным ItemView и учитывать все вложенные макеты. В обычных ситуациях я обычно использую withChild() , но для вас это может быть другим.