2016-04-24 61 views
1

我在Android RecyclerView上显示项目,我希望能够选择任何项目,并将其放在列表的最后。我知道如何添加或删除项目,但我正在寻找最简单的方法来实现此目的。Android RecyclerView将项目移动到视图结尾

如果可能的话,我也在寻找一种动画,当它下山时,它会显示飞越其他人的动画。

这里是我的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); 
    } 
} 

回答

1

我不知道notifyItemMoved()功能存在。 我只是从我的arraylist中删除了该元素,并在最后添加了它。然后我打电话给notifyItemMoved()。使用ItemAnimator,我得到了我想要的动画。

0

移动项目到您的List结束并重新加载Adapter

编辑: 要重新加载Adapter使用:

adapter.notifyDataSetChanged() 
+0

我应该使用什么方法重新加载RecyclerView? 其中之一? 'notifyItemChanged(INT) notifyItemInserted(INT) notifyItemRemoved(INT) notifyItemRangeChanged(INT,INT) notifyItemRangeInserted(INT,INT) notifyItemRangeRemoved(INT,INT)' – FrenchFalcon

+0

使用adapter.notifyDataSetChanged()的http:// stackoverflow.com/a/2919808/2792899 –

+0

我没有使用listview,从简单的'Listview'更新和通知'RecyclerView'differ的方法 – FrenchFalcon