Проблемы перехода с использованием FirestoreRecyclerAdapter & Navigation Component при переходе назад - PullRequest
0 голосов
/ 02 марта 2020

в моем текущем проекте у меня есть приложение master / detail с Android компонентом навигации & Firebase UI . Я пытался реализовать транзакцию с общим элементом в ImageView. Случай, когда я перехожу к фрагменту сведений, работает нормально, но возврат к фрагменту с помощью RecyclerView не делает.

На самом деле переход не применяется. Я предполагаю, что это проблема синхронизации.

Вот onViewCreated фрагмента, который содержит RecyclerView

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    binding.lifecycleOwner = viewLifecycleOwner
    binding.viewModel = viewModel

    viewModel.posts.observe(viewLifecycleOwner) { query ->

        val settings = FirestoreRecyclerOptions.Builder<FeedItem>()
                .setQuery(query, FeedItem::class.java)
                .setLifecycleOwner(viewLifecycleOwner)
                .build()

        binding.recyclerView.adapter = FeedAdapter(settings, viewModel) // FirestoreRecyclerAdapter
    }

    viewModel.toPostEvent.observe(viewLifecycleOwner) {

        it.consume()?.run { event ->
           // get the image in the card
           val image: ImageView = openPostEvent.view.findViewById(R.id.image);
           val extras = FragmentNavigatorExtras(image to "postImage")

           findNavController()
              .navigate(FeedFragmentDirections.actionPost(event.postId), extras)

    }

    setupRecyclerView()
}

private fun setupRecyclerView() {
    postponeEnterTransition()

    binding.recyclerView.run {
        layoutManager = LinearLayoutManager(context)
        doOnPreDraw { startPostponedEnterTransition() }
    }
}

На случай, если я просто задержу Enter-Transaction на секунду Я вижу анимацию. Но эта задержка - не то, что я хочу.

private fun setupRecyclerView() {
    // just delay the transition for one second
    postponeEnterTransition(1000, TimeUnit.MILLISECONDS)
    binding.recyclerView.run {
        layoutManager = LinearLayoutManager(context)
    }
}

Я нашел несколько постов в Интернете, посвященных этой проблеме, касающихся RecyclerView, и почти каждое решение советует отложить до OnPreDraw, поэтому я думаю, что пропустил некоторые специальные предложения, касающиеся FirestoreRecyclerAdapter.

Я благодарен за очень подсказку!

Приветствия!

...