title: Android RecyclerView move item to end of View
body: <p>I am displaying Items on a Android <code>RecyclerView</code>, and I would like to be able to select any item, and place it at then very end of the list. I know how to Add or Remove items, but I am looking for the cleanest way to achieve this.</p>
  
  <p>If possible, I am also looking for an animation that would show this item flying over the others, when going down.</p>
  
  <p>Here is my <code>adapter</code> :</p>
  
  <pre><code>public class DiscoverViewAdapter extends RecyclerView.Adapter&lt;DiscoverViewAdapter.ViewHolder&gt; {
  
      private List&lt;DiscoveredUser&gt; _items;
  
      public DiscoverViewAdapter(List&lt;DiscoveredUser&gt; items) {
          this._items = items;
      }
  
      public static class ViewHolder extends RecyclerView.ViewHolder
      {
          TextView userName;
          TextView userAge;
          TextView userDescription;
  
          public ViewHolder(View itemView)
          {
              super(itemView);
              userName = (TextView) itemView.findViewById(R.id.user_name);
              userAge = (TextView) itemView.findViewById(R.id.user_age);
              userDescription = (TextView) itemView.findViewById(R.id.user_description);
          }
      }
  
  
      @Override
      public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
          View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.user_discover_row, viewGroup, false);
          return new ViewHolder(v);
      }
  
      @Override
      public void onBindViewHolder(ViewHolder viewHolder, int i) {
          DiscoveredUser user = _items.get(i);
  
          viewHolder.userName.setText(user.getUsername());
          viewHolder.userAge.setText(Integer.toString(user.getAge()));
          viewHolder.userDescription.setText(user.getDescription());
      }
  
      @Override
      public int getItemCount() {
          return _items.size();
      }
  
      public void remove(int position) {
          //_items.remove(position);
          //notifyItemRemoved(position);
      }
  
      public void add(DiscoveredUser user, int position) {
          _items.add(position, user);
          notifyItemInserted(position);
      }
  
      public void addMultiple(DiscoveredUser[] users){
  
          final int size = users.length;
          for (DiscoveredUser user : users) {
              _items.add(0, user);
          }
          notifyItemRangeInserted(0, size);
      }
  }
  </code></pre>