如何在Recycler视图中将项目从一个部分交换到另一个部分,反之亦然?

时间:2016-07-22 02:12:22

标签: android xml android-recyclerview recycler-adapter notifydatasetchanged

我有RecyclerView,我希望将RecyclerView显示为两个部分。第一部分第一部分是空的,我想把第二部分的项目拖到第一部分。当项目被添加到第一部分时,它应该从第二部分删除,反之亦然。

请帮助我的朋友。RecyclerView

3 个答案:

答案 0 :(得分:3)

试试这个,它在我的应用程序中与我合作,

在您的适配器类中,将此代码放在

下面
  

此处MessageList是Arraylist的名称,

public void swap(int firstPosition, int secondPosition)
{
    Collections.swap(MessageList, firstPosition, secondPosition);
    notifyItemMoved(firstPosition, secondPosition);
}  
  

现在分别添加这个小班,

     

此处Adapter是适配器类的名称,其中包含您的适配器名称

public class MovieTouchHelper extends ItemTouchHelper.SimpleCallback {
    Aadapter recycleAdapter;

    public MovieTouchHelper(Aadapter recycleAdapter) {
        super(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);
        this.recycleAdapter = recycleAdapter;
    }

    @Override
    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
        recycleAdapter.swap(viewHolder.getAdapterPosition(), target.getAdapterPosition());
        return true;
    }

    @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
        recycleAdapter.remove(viewHolder.getAdapterPosition());
    }
}

然后在您定义了recycleview的mainActivity中

ItemTouchHelper.Callback callback = new MovieTouchHelper(adapter);
ItemTouchHelper helper = new ItemTouchHelper(callback);
helper.attachToRecyclerView(rv_list);
  

此处rv_list是recycleview的名称。

按照以下步骤操作,如果您发现任何问题或者无法转换项目,请直接告诉我......

参见此GIF

enter image description here

答案 1 :(得分:0)

您可以使用以下链接:

https://github.com/cymcsg/UltimateRecyclerView

https://github.com/wasabeef/recyclerview-animators

使用其中任何一个。我希望它会对你有所帮助。

在项目中导入lib。

答案 2 :(得分:0)

您应该使用ItemTouchHelper课程中的RecyclerView.ItemDecoration。 我只是按照本教程完成了你愿意的行为: https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.p6vykzstq