【问题标题】:How to implement Drag&Drop in listview?如何在列表视图中实现拖放?
【发布时间】:2016-06-20 06:08:13
【问题描述】:

我发现大多数类似的问题都是在几年前提出的。因此,我想知道是否有一种新的更简单的方法来实现listview的拖放功能?我正在为我的 listview 对象从 sqilte db 中获取数据。我没有找到一些简单的教程。如果有请分享链接。

我找到了这个视频:https://www.youtube.com/watch?v=_BZIvjMgH-Q 但是代码链接不起作用。

【问题讨论】:

  • 是的,有更简单的方法。使用RecyclerView。你可以在这里找到灵感medium.com/@ipaulpro/…
  • 那么,是说从现在开始使用RecyclerView比较好?不只是拖放
  • 检查一下它可能对你有帮助github.com/HoneyNeutrons/RecyclerViewUndoSwipe
  • 谢谢!等我看完RecyclerView的教程之后再看看
  • @Marat 当然。 ListView 快死了。

标签: android listview


【解决方案1】:

正如 cmets 中所说,使用 RecyclerView 实现 Drag&Drop 的最简单方法。它包括名为ItemTouchHelper 的特殊类,可以轻松处理拖放功能。在 ListView 的情况下,与 RecyclerView 相比,您需要编写更多代码。

以下代码是我发现有用的:

ItemTouchHelper item = new ItemTouchHelper(new ItemTouchHelper.Callback() {

        @Override
        public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
            int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
            int swipeFlags = 0;
            return makeMovementFlags(dragFlags, swipeFlags);
        }

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

        @Override
        public void onMoved(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, int fromPos, RecyclerView.ViewHolder target, int toPos, int x, int y) {
            super.onMoved(recyclerView, viewHolder, fromPos, target, toPos, x, y);
            Toast.makeText(MainActivity.this, "Moved", Toast.LENGTH_SHORT).show();
        }

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

    item.attachToRecyclerView(recyclerView);

【讨论】:

    猜你喜欢
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多