I am displaying Items on a Android RecyclerView
, 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.
If possible, I am also looking for an animation that would show this item flying over the others, when going down.
Here is my adapter
:
public class DiscoverViewAdapter extends RecyclerView.Adapter<DiscoverViewAdapter.ViewHolder> {
private List<DiscoveredUser> _items;
public DiscoverViewAdapter(List<DiscoveredUser> 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);
}
}