当前位置:   article > 正文

史上最精简Android RecyclerView实现拖拽排序改变位置代码_recyclerview 实现拖拽

recyclerview 实现拖拽

要实现RecyclerView的长按拖动改变位置,可以使用ItemTouchHelper类来处理拖动和滑动的操作。下面演示如何实现长按拖动改变位置:

首先,在你的Activity或Fragment中,初始化RecyclerView和ItemTouchHelper:

  1. RecyclerView recyclerView = findViewById(R.id.recyclerView);
  2. ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelperCallback());
  3. itemTouchHelper.attachToRecyclerView(recyclerView);
  4. RecyclerViewAdapter adapter = new RecyclerViewAdapter(dataList);
  5. recyclerView.setAdapter(adapter);
  6. recyclerView.setLayoutManager(new LinearLayoutManager(this));

然后,创建一个ItemTouchHelper.Callback的子类,用于处理拖动和滑动的操作:

  1. private class ItemTouchHelperCallback extends ItemTouchHelper.Callback {
  2. // 设置支持的拖动和滑动的方向
  3. @Override
  4. public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
  5. int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN; // 支持上下拖动
  6. int swipeFlags = 0; // 不支持滑动
  7. return makeMovementFlags(dragFlags, swipeFlags);
  8. }
  9. // 在拖动过程中不断调用,用于刷新RecyclerView的显示
  10. @Override
  11. public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder source, @NonNull RecyclerView.ViewHolder target) {
  12. int fromPosition = source.getAdapterPosition();
  13. int toPosition = target.getAdapterPosition();
  14. // 更新数据集中的位置
  15. Collections.swap(dataList, fromPosition, toPosition);
  16. // 更新RecyclerView的显示
  17. recyclerView.getAdapter().notifyItemMoved(fromPosition, toPosition);
  18. return true;
  19. }
  20. // 在滑动过程中调用,可以用于实现滑动删除等功能
  21. @Override
  22. public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
  23. // 不做任何操作
  24. }
  25. }

完成了,可以试着拖动一下试试

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/286777
推荐阅读
相关标签
  

闽ICP备14008679号