title: recyclerview.adapter resets radio-buttons
body: <p>This is my problem: 
  <a href="https://youtu.be/k-N5uthYhYw" rel="nofollow">https://youtu.be/k-N5uthYhYw</a></p>
  
  <p>and this is my onBindViewHolder() method.</p>
  
  <pre><code>// Replace the contents of a view (invoked by the layout manager)
  @Override
  public void onBindViewHolder(final ViewHolder holder, final int position) {
      // - get element from your dataset at this position
      // - replace the contents of the view with that element
  
      holder.specName.setText(specList.get(position).getSpecName());
  
      // Assign a tag number to later identify what radio-button
      holder.specRadioBtn.setTag(new Integer(position));
  
      /* Event listenr for longClick - we prob. won't use it, but it's here just in case */
      holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
          @Override
          public boolean onLongClick(View v) {
  
              Toast.makeText(context, "Long press", Toast.LENGTH_SHORT).show();
  
              return false;
          }
      });
  
      /* Little hack to select its Radio Button when a specific row is tapped */
      holder.itemView.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
  
              // Turn rowSelectedFlag to true since the user selected this row
              rowSelectedFlag = true;
  
              // When the user taps on a row select that row's radio button
              holder.specRadioBtn.setChecked(true);
  
              // I'm not sure why, but locally the interface needs to be started by pointing it
              // to where it should drive the data (to send the params)
              tempInterface = new AdminUserSpecialty();
  
              // Call the interface to send the data (row spec-name and id) back to AdminUserSpecialty
              tempInterface.activateSpecSelect(specList.get(position).getSpecName().toString(),
                      specList.get(position).getSpecId().toString(), rowSelectedFlag);
  
              int clickedPos = ((Integer) holder.specRadioBtn.getTag());
  
              // Check if the radio button is already selected
              if (holder.specRadioBtn.isChecked()) {
  
                  if (lastCheckedBtn != null) {
  
                      // Don't deselect if user taps on the same row several times
                      if (lastCheckedBtn == holder.specRadioBtn) {
  
                          // do nothing
                      }
  
                      // Otherwise do deselect the previously selected radio button
                      else {
  
                          lastCheckedBtn.setChecked(false);
                      }
                  }
  
                  lastCheckedBtn = holder.specRadioBtn;
                  lastCheckedPos = clickedPos;
              }
  
              // If radio is not checked set the lastCheckedBtn to null (reset counter)
              else {
                  lastCheckedBtn = null;
              }
          }
      });
  
      /* ----------------------------------------------------------------------*/
  
  
  }
  </code></pre>
  
  <p>I can't seem to preserve my radio-button selection on RecyclerView scroll. On scroll the selection becomes erratic and random. I understand that one of RecyclerView's features is to recycle rows as they leave the screen, but what do I need to do to keep my selection? Thanks much. </p>