Android - элементы RecyclerView не видны после изменения ориентации - PullRequest
1 голос
/ 04 марта 2020

Я использую в своем приложении Conductor framework .

Приложение в целом зафиксировано в состоянии портрет , но у меня 2 Controllers, что используйте ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR и реагируйте на изменения ориентации устройства

  • Controller A - показывает сводку снятых изображений
  • Controller B - это взаимодействие с камерой

, поэтому при запуске A сразу запускается B и отображается сводная информация после съемки изображений.

A содержит RecyclerView, который использует FlexboxLayoutManager (когда я пытался заменить менеджер макета с простым LinearLayoutManager ничего не изменилось)

У меня есть 3 потока, которые работают штраф:

  1. Устройство удерживается в Портрет -> A запущен -> B запущен -> изображения сняты -> B закрыто -> изображения Показано в A
  2. Устройство удерживается в Пейзаж - > A запущен -> B запущен - > изображения сняты -> B закрыт -> изображения показаны в A
  3. Устройство удерживается в Portrait -> A запущен -> B запущен -> ориентация устройства изменяется на альбомную -> снимки принимаются -> ориентация изменяется в Портрет -> B закрыто -> изображения Показано в A

Однако этот сценарий не выполняется:

Устройство удерживается в Portrait -> A запущено -> B запущено -> ориентация устройства изменяется на альбомную -> взяты изображения -> B закрыто -> изображения НЕ показаны в A

Во всех потоках Я вижу, что adapter знает о новых элементах, а getItemViewType, onCreateViewHolder и onBindViewHolder вызываются с правильными позициями

Поток, который терпит неудачу, на самом деле тот, который кажется наиболее естественным для меня как пользователя: (

  • Никто не знает, что происходит?
  • Можете ли вы предложить дополнительные направления для расследования?

ОБНОВЛЕНИЕ:

  • The представление рециркулятора было определено с помощью android:layout_height="wrap_content"
  • Изменение на android:layout_height="match_parent" при работе с LinearLayoutManager works (выглядит некрасиво)
  • Смена значения обратно на FlexboxLayoutManager завершает работу всех потоков, которые работали до

Итак, я смотрю на FlexboxLayoutManager, чтобы посмотреть, смогу ли я легко это исправить - я не думаю, что в моем потоке действительно необходим вид переработчика

1 Ответ

0 голосов
/ 05 марта 2020

Кажется, что решение было просто изменить RecyclerView с android:layout_height="wrap_content" на android:layout_height="match_parent".

В обновлении выше я сказал, что он все еще не работает с FlexboxLayoutManager, но проблема была на моем конце (слишком много комментариев и кода).

Исходный код был написан не мной, поэтому я не уверен, почему wrap_content был использован

...