title: Recyclerview Changing Items During Scroll
body: <p>I have a RecyclerView. Each row has a play button, textview and Progressbar. when click on the play button have to play audio from my sdcard and have to progress Progressbar
  The problem is when i scroll down the recyclerview change the Progressbar in next row.means  I can fit 5 items on the screen at once. When I scroll to the 6th, 6th row seekbar changes suddenly.</p>
  
  <pre><code>public class ListAdapter extends RecyclerView.Adapter {
  
      private List&lt;Historyitem&gt; stethitems;
      public Context mContext;
      public Activity activity;
      public Handler mHandler;
  
      static MediaPlayer mPlayer;
      static Timer mTimer;
  
      public ListAdapter(Activity activity,Context mContext,List&lt;Historyitem&gt; stethitems) {
          this.stethitems = stethitems;
          this.mContext = mContext;
          this.activity = activity;
      }
  
      @Override
      public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
  
          View rootView = LayoutInflater.
                  from(mContext).inflate(R.layout.stethoscopeadapteritem, null, false);
          RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                  ViewGroup.LayoutParams.WRAP_CONTENT);
          rootView.setLayoutParams(lp);
          mHandler = new Handler();
          return new MyViewHolder(rootView);
      }
  
      @Override
      public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, int position) {
  
          final Historyitem dataItem = stethitems.get(position);
          final MyViewHolder myViewHolder = (MyViewHolder) viewHolder;
          myViewHolder.progressplay.setProgress(0);
          myViewHolder.stethdatetime.setText(dataItem.getReported_Time());
          myViewHolder.stethhosname.setText(dataItem.getdiv());
  
          if(dataItem.getPatient_Attribute().replaceAll(" ","").equals("")){
              myViewHolder.stethdoctorname.setText(dataItem.getunit());
          } else {
              myViewHolder.stethdoctorname.setText(dataItem.getPatient_Attribute());
          }
  
          myViewHolder.stethstreamplay.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
  
                     FileDownload(dataItem.getmsg(),
                              myViewHolder.progressplay);
  
              }
          });
      }
  
      @Override
      public int getItemCount() {
  
          return stethitems.size();
      }
  
      public class MyViewHolder extends RecyclerView.ViewHolder {
  
          final CustomTextRegular stethdatetime;
          final CustomTextView stethhosname;
          final CustomTextBold stethdoctorname;
          final ImageButton stethstreamplay;
          final NumberProgressBar progressplay;
  
          public MyViewHolder(View itemView) {
              super(itemView);
  
              stethdatetime = (CustomTextRegular)
                      itemView.findViewById(R.id.stethdatetime);
              stethhosname = (CustomTextView)
                      itemView.findViewById(R.id.stethhosname);
              stethdoctorname = (CustomTextBold)
                      itemView.findViewById(R.id.stethdoctorname);
              stethstreamplay = (ImageButton)
                      itemView.findViewById(R.id.stethstreamplay);
              progressplay= (NumberProgressBar)
                      itemView.findViewById(R.id.progressplay);
  
  
          }
      }
      public void  FileDownload(final String downloadpath,
  
                                       final NumberProgressBar progressplay) {
  
          new AsyncTask&lt;NumberProgressBar, Integer, NumberProgressBar&gt;() {
              NumberProgressBar progress;
              @Override
              protected void onPreExecute() {
                  super.onPreExecute();
                  try {
                      if(mPlayer!=null){
                          mPlayer.stop();
                      }
                  }catch (Exception e){
                  }
                  try {
                      if(mTimer != null){
                          mTimer.purge();
                          mTimer.cancel();
                      }
                  }catch (Exception e){
                  }
              }
  
              @Override
              protected NumberProgressBar doInBackground(NumberProgressBar... params) {
                  int count;
                  progress = progressplay;
                  try {
  
                      final List&lt;NameValuePair&gt; list = new ArrayList&lt;NameValuePair&gt;();
                      list.add(new BasicNameValuePair("pid",id));
  
                      URL url = new URL(Config.requestfiledownload + "?path=" +
                              downloadpath);
                      URLConnection connection = url.openConnection();
                      connection.connect();
  
                      int lenghtOfFile = connection.getContentLength();
                      // download the file
                      InputStream input = new BufferedInputStream(url.openStream());
                      OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory() +
                              "record.wav");
                      byte data[] = new byte[1024];
                      long total = 0;
                      while ((count = input.read(data)) != -1) {
                          total += count;
                          // publishing the progress....
                          publishProgress((int) (total * 100 / lenghtOfFile));
                          output.write(data, 0, count);
                      }
                      output.flush();
                      output.close();
                      input.close();
                  } catch (Exception e) {
  
                  }
                  return progress;
              }
              @Override
              protected void onPostExecute(final NumberProgressBar numberProgressBar) {
                  super.onPostExecute(numberProgressBar);
  
                          try {
                              StartMediaPlayer(numberProgressBar);
                          } catch (Exception e){
                              e.printStackTrace();
                          }
  
              }
          }.execute();
      }
  
      public void StartMediaPlayer(final NumberProgressBar progressbar){
          Uri playuri = Uri.parse("file:///sdcard/record.wav");
          mPlayer = new MediaPlayer();
          mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
          mPlayer.reset();
          try {
              mPlayer.setDataSource(mContext, playuri);
          } catch (IllegalArgumentException e) {
  
          } catch (SecurityException e) {
  
          } catch (IllegalStateException e) {
  
          } catch (Exception e) {
  
          }
          try {
              mPlayer.prepare();
          } catch (Exception e) {
  
          }
  
          mPlayer.start();
          progressbar.setMax(mPlayer.getDuration());
          mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
              @Override
              public void onCompletion(MediaPlayer mp) {
                  if(mPlayer!=null) {
                      mPlayer.release();
                      progressbar.setProgress(0);
                  }
                  if(mTimer != null){
                      mTimer.purge();
                      mTimer.cancel();
                  }
              }
          });
          mTimer = new Timer();
          mTimer.schedule(new TimerTask() {
              @Override
              public void run() {
                  mHandler.post(new Runnable() {
                      @Override
                      public void run() {
                          progressbar.setProgress(mPlayer.getCurrentPosition());
                      }
                  });
              }
          },0,500);
      }}
  </code></pre>