title: Unable to Show imageView in recyclerVIew synchronously with TTS
body: <p>How can i show/Hide imageView in recyclerView as TTS(text to speech) plays for all the available list items, one by one!  </p>
  
  <p><strong>Activity method</strong>
  -This method is called r with Loop(not working, no bugs but simply do not give my expected output</p>
  
  <pre><code>    int position=0;
      public void convertTextToSpeech() {
          Multiples multiples1=items.get(position);
          for (Multiples item : items) {
  
              text = item.first + "  " + item.getSecond() + " Za " + item.getResult() + ".";
              tts.speak(text, TextToSpeech.QUEUE_ADD, null);
              boolean speakingEnd = tts.isSpeaking();
  
              if (speakingEnd) {
                  Toast.makeText(getApplicationContext(), "Speaking...."+position, Toast.LENGTH_SHORT).show();
                  multiples1.setImage_show(true);
                  mAdapter.notifyItemChanged(position);
              } else {
                  Toast.makeText(getApplicationContext(), "Done...."+position, Toast.LENGTH_SHORT).show();
              }
              position++;
          }
      }
  </code></pre>
  
  <p>The complete code is below for more understanding,   </p>
  
  <p>First, i displayed all items in recyclerView. Afterward, I am calling the displayed item in a method having for loop to TTS play each rows(list item).  The problem i am facing now is the imageView is not displaying as each recyclerView item are being read by TTS. </p>
  
  <p>Expected output is whenever TTS plays for each row item textView, An imageView(#image1) should show simultaneously</p>
  
  <hr>
  
  <hr>
  
  <hr>
  
  <h1><strong>UPDATED TRIED CODE</strong></h1>
  
  <p>DisplayActivityResultAdapter.java</p>
  
  <pre><code>    ......
      .......
      int position = 0;
      public void convertTextToSpeech() {
          Multiples multiples1=items.get(position);
          for (Multiples item : items) {
              text = item.first + "  " + item.getSecond() + " Za " + item.getResult() + ".";
              tts.speak(text, TextToSpeech.QUEUE_ADD, null);
              boolean speakingEnd = tts.isSpeaking();
  
              // Toast.makeText(getApplicationContext(), "Speaking...."+position, Toast.LENGTH_SHORT).show();
             // multiples1.setImage_show(true);
              //  mAdapter.notifyItemChanged(position);
             // Log.i("values","------------------------------------------Row value-"+item.getFirst()+" X "+item.getSecond()+", Position="+position);
               //------------------------
              MyAdapter m= (MyAdapter)  mAdapter;
              m.updateItem(item,position);
              position++;
          }
      }
  }
  </code></pre>
  
  <p>MyAdapter.java</p>
  
  <pre><code>    .....
      .....
      // Replace the contents of a view (invoked by the layout manager)
      @Override
      public void onBindViewHolder(MyViewHolder holder, int position) {
          // - get element from your dataset at this position
          // - replace the contents of the view with that element
  
          if (holder instanceof MyAdapter.MyViewHolder) {
              final MyAdapter.MyViewHolder view = (MyAdapter.MyViewHolder) holder;
              Multiples p = items.get(position);
              view.name.setText(p.first + " X " + p.getSecond() + "= "+p.getResult());
  
              if(position&gt;0) {
                  if (p.image_show) {
                      view.image1.setVisibility(View.VISIBLE);
                      view.image.setVisibility(View.INVISIBLE);
                  } else {
                      view.image1.setVisibility(View.INVISIBLE);
                      view.image.setVisibility(View.VISIBLE);
                  }
              }
          }
      }
  
  
      public void updateItem(Multiples newItem, int pos) {
          Log.i("values","-----In updateItem Log----Row value-"+newItem.getFirst()+" X "+newItem.getSecond()+", Position="+pos);
          items.set(pos, newItem); //update passed value in your adapter's data structure
          Log.e("msg","-----items.get(pos)-------------&gt;"+items.get(pos).getFirst()+" X " +items.get(pos).getSecond());
  
          notifyItemChanged(pos,newItem);
      }
  
      // Return the size of your dataset (invoked by the layout manager)
      @Override
      public int getItemCount() {
          return items.size();
      }
  }
  </code></pre>