title: notifyItemChanged() not working when called within setOnUtteranceProgressListener
body: <p><strong>Edit</strong></p>
  
  <p>I've created a demo project on <code>Github</code> showing the exact problem. <a href="https://github.com/Dan277/notifyItemChangedProblem" rel="noreferrer">Git Project</a>.</p>
  
  <hr>
  
  <p>I've written an expandable <code>recyclerView</code> in <code>Kotlin</code> Every row has a play button which uses <code>TextToSpeech</code>. The text of the play button should change to stop whilst its playing, then change back to play when it finishes.</p>
  
  <p>When I call <code>notifyItemChanged</code> within <code>onStart</code> and <code>onDone</code> of <code>setOnUtteranceProgressListener</code>, <code>onBindViewHolder</code> is not called and the rows in the recyclerView will no longer expand and collapse correctly.</p>
  
  <pre><code>t1 = TextToSpeech(context, TextToSpeech.OnInitListener { status -&gt;
      if (status != TextToSpeech.ERROR) {
          t1?.setOnUtteranceProgressListener(object : UtteranceProgressListener() {
              override fun onStart(utteranceId: String?) {
                  recyclerView.adapter.notifyItemChanged(position)
              }
  
              override fun onStop(utteranceId: String?, interrupted: Boolean) {
                      super.onStop(utteranceId, interrupted)
                      onDone(utteranceId)
              }
  
              override fun onDone(utteranceId: String?) {
                  val temp = position
                  position = -1
                  recyclerView.adapter.notifyItemChanged(temp)
              }
  
              override fun onError(utteranceId: String?) {}
  //                    override fun onError(utteranceId: String?, errorCode: Int) {
  //                        super.onError(utteranceId, errorCode)
  //                    }
          })
      }
  })
  </code></pre>
  
  <p>onBindViewHolder:</p>
  
  <pre><code>override fun onBindViewHolder(holder: RabbanaDuasViewHolder, position: Int){
      if (Values.playingPos == position) {
          holder.cmdPlay.text = context.getString(R.string.stop_icon)
      }
      else {
          holder.cmdPlay.text = context.getString(R.string.play_icon)
      }
  }
  </code></pre>
  
  <p>How can I call <code>notifyItemChanged(position)</code> from within <code>setOnUtteranceProgressListener</code> or what callback can I use so that notifyItemChanged only executes when it's safe to execute?</p>