Вы собираете свой адаптер RecyclerView до подачи данных в список, поэтому вам нужно вызвать mPostList = posts.toMutableList()
перед созданием экземпляра вашего адаптера.
Итак, измените setupObservers()
на:
private fun setupObservers(){
mServiceRequest.searchPostsFromAPI().observe(this, Observer { posts ->
if (posts != null){
mPostList = posts.toMutableList()
loadRecyclerView()
}
})
}
Также установите свой адаптер после того, как вы полностью соберете RecyckerView
. Поэтому измените порядок loadRecyclerView (), как показано ниже.
private fun loadRecyclerView() {
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.setHasFixedSize(true)
recyclerView.adapter = PostListAdapter(mPostList, mOnPostListInteractionListener)
}
Настройка RecyclerView
адаптера до того, как макет может вызвать проблемы.
Примечание:
Вы создаете экземпляр своего адаптера каждый раз, когда ваш список изменилось, и это не правильный путь, и лучше создавать свои вещи (включая адаптер) только один раз в жизненном цикле, а затем создавать сеттеры каждый раз, когда вы хотите изменить их, вместо того, чтобы создавать их экземпляры снова и снова.
Таким образом, вы можете создать экземпляр вашего адаптера только один раз в методе onCreate()
и создать метод в вашем адаптере, который будет принимать сообщения setPosts(private val postList: List<PostModel>)
и устанавливать их внутренне ... всякий раз, когда вам нужно изменить список адаптеров, просто вызовите setPosts