title: DiffCallback not called in listadapter
body: <p>Hi i'm trying to use listadapter and diffcallback in my app. Somehow the view not update at all, when i do something.</p>
  
  <p>When i put some log inside my "areItemsTheSame" and "areContentsTheSame" inside callback, it's not called at all.</p>
  
  <p>Here is my mainActivity</p>
  
  <pre><code>class MainActivity : AppCompatActivity() {
  
  private lateinit var recyclerView: RecyclerView
  private lateinit var viewAdapter: TodoAdapter
  private lateinit var viewManager: RecyclerView.LayoutManager
  
  private lateinit var viewModel : TodoViewModel
  
  override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)
  
      val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
  
      //viewModel
      viewModel = ViewModelProviders.of(this).get(TodoViewModel::class.java)
      viewManager = LinearLayoutManager(this)
      viewAdapter = TodoAdapter(viewModel.todos)
  
      binding.btnNew.setOnClickListener {
          viewModel.todos.value!!.add(Todo(3, binding.newText.text.toString()))
      }
  
      recyclerView = binding.myRecyclerView
  
      recyclerView.apply {
          layoutManager = viewManager
          adapter = viewAdapter
      }
  
      viewModel.todos.observe(this, Observer{ list -&gt;
          viewAdapter.submitList(list)
          Log.i("debug", "im @observe " + list.toString())
      })
  
  }
  </code></pre>
  
  <p>}</p>
  
  <p>and here is my Adapter</p>
  
  <pre><code> class TodoAdapter(var items: MutableLiveData&lt;ArrayList&lt;Todo&gt;&gt;):
      ListAdapter&lt;Todo, TodoAdapter.MyViewHolder&gt;(TodoDiffCallback()) {
  
  // Create new views (invoked by the layout manager)
  override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
      // create a new view
      val inflater = LayoutInflater.from(parent.context)
      val binding  = ListItemBinding.inflate(inflater)
  
      return MyViewHolder(binding)
  }
  
  
  override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
      holder.todoText.text = getItem(position).task
  
      //delete
      holder.delBtn.setOnClickListener {
          items.value!!.removeAt(position)
          submitList(items.value)
          Log.i("debug", "@adapter what is items " + items.value.toString())
      }
  
  //override fun getItemCount() = items.value!!.size
  
  
  class MyViewHolder(val binding: ListItemBinding) : RecyclerView.ViewHolder(binding.root) {
      val todoText = binding.todoItem
      val delBtn = binding.btnDelete
      val ediBtn = binding.btnEdit
  }
  </code></pre>
  
  <p>}</p>
  
  <pre><code>class TodoDiffCallback : DiffUtil.ItemCallback&lt;Todo&gt;(){
  
  override fun areItemsTheSame(p0: Todo, p1: Todo): Boolean {
      Log.i("debug", " here " +p0 + " inItems " + p1 )
      return p0 == p1
  }
  
  override fun areContentsTheSame(p0: Todo, p1: Todo): Boolean {
      Log.i("debug", "here " + p0 + " inContents" + p1 )
      return p0.equals(p1)
  }
  </code></pre>
  
  <p>}</p>
  
  <p>my ViewModel</p>
  
  <pre><code>class TodoViewModel: ViewModel() {
  
  val todos = MutableLiveData&lt;ArrayList&lt;Todo&gt;&gt;()
  
  init{
      todos.value = arrayListOf(
          Todo(1, "cooking"),
          Todo(2, "washing")
      )
  }
  </code></pre>
  
  <p>}</p>
  
  <p>Unfortunately the android docs didn't give more examples on this.</p>
  
  <p>Again, both "logs" inside my DiffUtil class not called at all. When i click remove button, the UI not updated but the log show the correct results.</p>
  
  <p>thanks</p>