Search code examples
androidkotlinandroid-paging-3

PagingDataAdapter class not executed after called adapter.submitData method


i want to try Paging 3 in my android apps. It successed until i get my PagingData<*> list from class PagingDataSource. but every time i called adapter.submitData(it), my adapter class not execute. Please help, where is my mistake? Thank you so much.

this is my code homeFragment.kt to call

private lateinit var webinarListAdapter: myAdapter
    fun initAdapter() {
        webinarAdapter = myAdapter()
        with(recyclerView) {
            layoutManager = LinearLayoutManager(requireContext())
            adapter = webinarAdapter
            adapter = webinarAdapter.withLoadStateHeaderAndFooter(
                header = WebinarLoadStateAdapter { webinarAdapter.retry() },
                footer = WebinarLoadStateAdapter { webinarAdapter.retry() }
            )
        }
       lifecycleScope.launch {
            viewModel.user.collectLatest {
                webinarAdapter.submitData(it)
            }
       }
}```


MyAdapter.kt class

```class myAdapter: PagingDataAdapter<User, UserHolder>(DIFF_CALLBACK) {
  
    override fun onBindViewHolder(holder: UserHolder, position: Int) {
        Log.e(TAG, "onBindViewHolder")
        holder.onBind(getItem(position)!!)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserHolder {
        return UserHolder.create(parent)
    }

    companion object {
        private val DIFF_CALLBACK = object : DiffUtil.ItemCallback<User>() {
            override fun areItemsTheSame(oldItem: User, newItem: User) =
                oldItem.id == newItem.id

            override fun areContentsTheSame(oldItem: Taklim, newItem: Taklim) = oldItem == newItem
        }
    }
}```

Solution

  • after debug more and more i know where is my mistake. my mistake is on my paging data source executed catch exception. so my adapter not executed and my viewmodel not receive any data. Thanks!