в моем текущем проекте у меня есть приложение 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
.
Я благодарен за очень подсказку!
Приветствия!