Recyclerview теряет позицию при повороте экрана - PullRequest
0 голосов
/ 15 октября 2019

несмотря на то, что я использую viewmodel для данных, каждый раз при изменении ориентации экрана просмотрщик продолжает прокручиваться вверх.

   override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    (activity as AppCompatActivity).setSupportActionBar(binding?.toolbar)


    val host: NavHostFragment = activity?.supportFragmentManager
        ?.findFragmentById(R.id.nav_host_fragment) as NavHostFragment?
        ?: return

    // Set up Action Bar
    val navController = host.navController

    // Setup bottom navigation view
    binding?.bottomNav?.setupWithNavController(navController)

}


override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
     binding = DataBindingUtil.inflate(inflater , com.angelstudio.newsapp.R.layout.fragment_feed,container , false)
    myView= binding.root

    return myView
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    viewModel =ViewModelProviders.of(this,viewModelFactory).get(FeedFragmentViewModel::class.java)

    bindUi()
    (activity as? AppCompatActivity)?.supportActionBar?.title = getString(R.string.Naws_App)
    (activity as? AppCompatActivity)?.supportActionBar?.subtitle = getString(R.string.Feed)

    binding.mySwiperefresh.setOnRefreshListener {
        refresh()
        mySwiperefresh.setRefreshing(false)
    }
}


 private fun bindUi()=launch {
    val topHeadline =viewModel.topHeadline.await()
    val naviagte =viewModel.navigateToDetail.await()

    topHeadline.observe(this@FeedFragment, Observer {
        if(it == null || it.isEmpty()) return@Observer

      binding.recyclerView.apply {
            showShimmerAdapter()
            topHeadlineAdapter = TopHeadlineAdapter(TopHeadlineListener { 
                url ->  viewModel.onTopHeadlineClicked(url)
            })
            adapter = topHeadlineAdapter
            topHeadlineAdapter.submitList(it)
            hideShimmerAdapter()
        }
    })

вот мой код на фрагменте, я не могу найти то, что делаюнеправильно, есть ли что-то, что нужно обработать в состоянии позиции просмотра повторного просмотра на viewmodel?

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Взгляните на эту ссылку переполнения стека

Вам необходимо сохранить положение представления рециркулятора в сохраненном состоянии экземпляра, и после изменения конфигурации необходимо прокрутить представление рециркулятора досохраненная позиция

0 голосов
/ 15 октября 2019

Добавьте android:configChanges="orientation|keyboardHidden" к вашему тегу активности в manifest примерно так:

<activity
        android:name=".activity.MainActivity"
        android:configChanges="orientation|keyboardHidden"
        android:theme="@style/AppTheme.NoActionBar">

</activity>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...