title: RecyclerView Jumps to Top when scrolling through feed
body: <p>I am working on a Spanish news app, see here: </p>
  
  <p>The problem with the app is that whenever any user clicks on like, play audio or translate button, the recyclerView jumps to top.</p>
  
  <ul>
  <li><p>The data is fetched from Firebase Realtime Database in fragment. Please help.</p></li>
  <li><p>@Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                               Bundle savedInstanceState) {
          // Inflate the layout for this fragment
          mView = inflater.inflate(R.layout.fragment_feed, container, false);</p>
  
  <pre><code>    MobileAds.initialize(mView.getContext(), "XXXXXXXXX");
  
  
      mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(mView.getContext());
      mRewardedVideoAd.setRewardedVideoAdListener(this);
      loadRewardedVideoAd();
  
      mAuth = FirebaseAuth.getInstance();
  
      feedRecycler = mView.findViewById(R.id.recycler_feed);
      feedRecycler.setLayoutManager(new LinearLayoutManager(getContext()));
      RecyclerView.Adapter adapter = new FeedAdapter(mView.getContext(),mRecyclerViewItems);
      feedRecycler.setAdapter(adapter);
  
      userImage = mView.findViewById(R.id.feed_img);
      username = mView.findViewById(R.id.feed_name);
      usercomment = mView.findViewById(R.id.feed_edittext);
      subMitComment = mView.findViewById(R.id.feed_submit);
  
  
      mUSerCmt = FirebaseDatabase.getInstance().getReference().child("feeds");
      mScoreRef = FirebaseDatabase.getInstance().getReference().child("scores");
  
      if(mAuth.getCurrentUser().getPhotoUrl()!= null) {
  
          Picasso.get().load(mAuth.getCurrentUser().getPhotoUrl().toString()).into(userImage);
          username.setText(mAuth.getCurrentUser().getDisplayName());
  
      } else {
  
          startActivity(new Intent(mView.getContext(),UserProfile.class));
  
      }
  
      subMitComment.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
  
              String usercmt = usercomment.getText().toString();
  
              if(!usercmt.equals("")){
  
                  writeNewPost(usercmt,mAuth.getUid(),mAuth.getCurrentUser().getDisplayName(),mAuth.getCurrentUser().getPhotoUrl().toString());
  
                  Toast.makeText(mView.getContext(),"Comment updated!",Toast.LENGTH_SHORT).show();
  
              }
  
              usercomment.setText("");
  
  
          }
      });
  
      mUSerCmt.orderByChild("timestamp").addValueEventListener(new ValueEventListener() {
          @Override
          public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
              mRecyclerViewItems.clear();
              for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                  Model_Feed epiModel = dataSnapshot1.getValue(Model_Feed.class);
                  mRecyclerViewItems.add(epiModel);
              }
              FeedAdapter = new FeedAdapter(mView.getContext(), mRecyclerViewItems);
              feedRecycler.setAdapter(FeedAdapter);
              FeedAdapter.notifyDataSetChanged();
  
  
  
          }
  
          @Override
          public void onCancelled(@NonNull DatabaseError databaseError) {
  
          }
      });
  
  
  
  
      return mView;
  }
  
  private void writeNewPost(String sen, String uid, String name, String img) {
      // Create new post at /user-posts/$userid/$postid and at
      // /posts/$postid simultaneously
      String key = mUSerCmt.push().getKey();
      long time = System.currentTimeMillis() * (-1);
      Model_Feed post = new Model_Feed(sen,time,uid, name, img,key);
      Map&lt;String, Object&gt; postValues = post.toMap();
  
      Map&lt;String, Object&gt; childUpdates = new HashMap&lt;&gt;();
      childUpdates.put(key, postValues);
  
  
      mUSerCmt.updateChildren(childUpdates);
  }
  
  public class FeedAdapter extends RecyclerView.Adapter&lt;FeedAdapter.FeedViewHolder&gt;{
  
      private Context context;
      private List&lt;Object&gt; mRecyclerViewItems;
  
      public FeedAdapter(Context context, List&lt;Object&gt; mRecyclerViewItems) {
          this.context = context;
          this.mRecyclerViewItems = mRecyclerViewItems;
      }
  
      @NonNull
      @Override
      public FeedViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
          LayoutInflater inflater = LayoutInflater.from(context);
          View view = inflater.inflate(R.layout.rec_words,viewGroup,false);
          return new FeedViewHolder(view);
      }
  
      @Override
      public void onBindViewHolder(@NonNull final FeedViewHolder feedViewHolder, int i) {
  
          final Model_Feed modelFeed = (Model_Feed) mRecyclerViewItems.get(i);
  
          Picasso.get().load(modelFeed.getImg()).into(feedViewHolder.circleImageView);
          feedViewHolder.nameWord.setText(modelFeed.getName());
          feedViewHolder.statusword.setText(modelFeed.getSen());
          feedViewHolder.fireword.setText(String.valueOf(modelFeed.fires.size()));
          feedViewHolder.playword.setText(String.valueOf(modelFeed.plays.size()));
  
          if(modelFeed.fires.containsKey(mAuth.getUid())){
              feedViewHolder.fireimage.setImageDrawable(getResources().getDrawable(R.drawable.fire));
          }
  
          if(modelFeed.plays.containsKey(mAuth.getUid())){
              feedViewHolder.playimage.setImageDrawable(getResources().getDrawable(R.drawable.play_button));
          }
  
          feedViewHolder.fireLinear.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
  
                  feedViewHolder.fireimage.setImageDrawable(getResources().getDrawable(R.drawable.fire));
                  onFireClicked(mUSerCmt.child(modelFeed.getKey()),modelFeed.getUid());
  
  
              }
          });
  
          feedViewHolder.playLinear.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  feedViewHolder.playimage.setImageDrawable(getResources().getDrawable(R.drawable.play_button));
                  sen_sound = modelFeed.getSen();
  
                  mScoreRef.child(mAuth.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
                      @Override
                      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                          final Model_Score modelScore = dataSnapshot.getValue(Model_Score.class);
                          long scoreCheck = modelScore.getScore();
                          if (scoreCheck &lt; 1 ){
                              AlertDialog.Builder builder;
                              if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.LOLLIPOP) {
                                  builder = new AlertDialog.Builder(context, android.R.style.Theme_Material_Dialog_Alert);
                              } else {
                                  builder = new AlertDialog.Builder(context);
                              }
                              builder.setTitle("Insufficient Coins")
                                      .setMessage("You've insufficient coins in your wallet to listen this audio, Watch a reward video complete and get 50 coins.")
                                      .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                                          public void onClick(DialogInterface dialog, int which) {
  
                                                  long score = modelScore.getScore() + 5;
                                                  Model_Score modelScore1 = new Model_Score(score, modelScore.getReput(), mAuth.getUid());
                                                  mScoreRef.child(mAuth.getUid()).setValue(modelScore1);
                                              }
                                              scorez = modelScore.getScore();
                                              reputz = modelScore.getReput();
  
                                      })
                                      .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                                          public void onClick(DialogInterface dialog, int which) {
                                              Toast.makeText(mView.getContext(),"Our Apologies for inconvenience",Toast.LENGTH_SHORT).show();
                                          }
                                      })
                                      .setIcon(android.R.drawable.ic_dialog_alert)
                                      .show();
                          }else {
  
                              long score = modelScore.getScore() - 10;
                              Model_Score modelScore1 = new Model_Score(score, modelScore.getReput(), mAuth.getUid());
                              mScoreRef.child(mAuth.getUid()).setValue(modelScore1);
  
                          }
                      }
  
                      @Override
                      public void onCancelled(@NonNull DatabaseError databaseError) {
  
                      }
                  });
  
              }
          });
  
  
      }
  
      @Override
      public int getItemCount() {
          return mRecyclerViewItems.size();
      }
  
      public class FeedViewHolder extends RecyclerView.ViewHolder{
  
          CircleImageView circleImageView;
          TextView nameWord, statusword,fireword,playword;
          LinearLayout fireLinear, playLinear;
          ImageView fireimage, playimage;
  
          public FeedViewHolder(@NonNull View itemView) {
              super(itemView);
  
              circleImageView = itemView.findViewById(R.id.word_image);
              nameWord = itemView.findViewById(R.id.word_name);
              statusword = itemView.findViewById(R.id.word_status);
              fireword = itemView.findViewById(R.id.word_text_fire);
              playword = itemView.findViewById(R.id.word_text_play);
              fireLinear = itemView.findViewById(R.id.word_fire_linear);
              playLinear = itemView.findViewById(R.id.word_play_linear);
              fireimage = itemView.findViewById(R.id.word_img_fire);
              playimage = itemView.findViewById(R.id.word_img_play);
  
  
  
          }
  
  
  
      }
  }
  
  void sendReward(long scores, long reputs){
      long score = scores + 50;
      Model_Score modelScore1 = new Model_Score(score, reputs, mAuth.getUid());
      mScoreRef.child(mAuth.getUid()).setValue(modelScore1);
  }
  
  void showToast(String msg){
      Toast.makeText(mView.getContext(),msg,Toast.LENGTH_SHORT).show();
  }
  
  
  private void onFireClicked(DatabaseReference postRef, final String cr_uid) {
      postRef.runTransaction(new Transaction.Handler() {
          @Override
          public Transaction.Result doTransaction(MutableData mutableData) {
              Model_Feed p = mutableData.getValue(Model_Feed.class);
              if (p == null) {
                  return Transaction.success(mutableData);
              }
  
              if (p.fires.containsKey(mAuth.getUid())) {
                  // Unstar the post and remove self from stars
                  p.firecount = p.firecount - 1;
                  p.fires.remove(mAuth.getUid());
              } else {
                  // Star the post and add self to stars
                  p.firecount = p.firecount + 1;
                  p.fires.put(mAuth.getUid(), true);
                  mScoreRef.child(cr_uid).addListenerForSingleValueEvent(new ValueEventListener() {
                      @Override
                      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                          Model_Score modelScore = dataSnapshot.getValue(Model_Score.class);
  
                          long reput = modelScore.getReput();
                          Model_Score modelScore1 = new Model_Score(modelScore.getScore(), reput + 10, cr_uid);
                          mScoreRef.child(cr_uid).setValue(modelScore1);
  
                      }
  
                      @Override
                      public void onCancelled(@NonNull DatabaseError databaseError) {
  
                      }
                  });
              }
  
              // Set value and report transaction success
              mutableData.setValue(p);
              return Transaction.success(mutableData);
          }
  
          @Override
          public void onComplete(DatabaseError databaseError, boolean b,
                                 DataSnapshot dataSnapshot) {
              // Transaction completed
              //Log.d(TAG, "postTransaction:onComplete:" + databaseError);
          }
      });
  }
  
  
  private void onPlayClicked(DatabaseReference postRef) {
      postRef.runTransaction(new Transaction.Handler() {
          @Override
          public Transaction.Result doTransaction(MutableData mutableData) {
              Model_Feed p = mutableData.getValue(Model_Feed.class);
              if (p == null) {
                  return Transaction.success(mutableData);
              }
  
              if (p.plays.containsKey(mAuth.getUid())) {
                  // Unstar the post and remove self from stars
                  p.playcount = p.playcount + 1;
                  p.plays.put(mAuth.getUid() + p.playcount,true);
                  new readSen().execute();
              } else {
                  // Star the post and add self to stars
                  p.playcount = p.playcount + 1;
                  p.plays.put(mAuth.getUid(), true);
              }
  
              // Set value and report transaction success
              mutableData.setValue(p);
              return Transaction.success(mutableData);
          }
  
          @Override
          public void onComplete(DatabaseError databaseError, boolean b,
                                 DataSnapshot dataSnapshot) {
              // Transaction completed
              //Log.d(TAG, "postTransaction:onComplete:" + databaseError);
          }
      });
  }
  </code></pre></li>
  </ul>