1. DiffUtil + ListAdapter의 필요성
  1. DiffUtil이란?
  1. DiffUtil 구현법
  1. Adapter에 DiffUtil 구현

    companion object {
        val diffUtil = object : DiffUtil.ItemCallback<Repo>() {
            override fun areItemsTheSame(oldItem: Repo, newItem: Repo): Boolean {
                return oldItem.name == newItem.name
            }
    
            override fun areContentsTheSame(oldItem: Repo, newItem: Repo): Boolean {
                return oldItem == newItem
            }
        }
    }
    
  1. ListAdapter이란?
  1. ListAdapter 구현
  1. ListAdapter 생성

    class RepoAdapter(context: Context) : ListAdapter<Repo, RepoAdapter.RepoViewHolder>(diffUtil)
    
  2. Adapter를 사용할 Fragment or Activity에서 submitList 로 데이터를 넘겨줌

    repoAdapter.submitList(viewModel.mockRepoList)
    
  3. onBindViewHolder() 수정 (나머지는 동일하게! But getItemCount 는 필요 X)

    override fun onBindViewHolder(holder: RepoAdapter.RepoViewHolder, position: Int) {
            holder.onBind(currentList[position])
        }