在Android 4+;列表视图

在Android 4+;列表视图,android,listview,android-listview,Android,Listview,Android Listview,在iOS上,重新排序ListView项非常容易。现在我想在Android上做同样的事情,但这似乎相当麻烦:SDK不支持项目重新排序,必须自己实现,或者使用第三方实现 我找到了几篇关于这个问题的文章和帖子,但都很老(2-3年)。例如,在许多地方都引用了项目,但不再维护该项目。因为我的应用程序应该支持Android 4+,所以我想问一下,是否有更好的方法来实现这一点 当然,拖放重新排序对用户来说是最方便的方式,但我对任何可行的解决方案都持开放态度(例如,使用带有上/下键的上下文菜单) 在Androi

在iOS上,重新排序
ListView
项非常容易。现在我想在Android上做同样的事情,但这似乎相当麻烦:SDK不支持项目重新排序,必须自己实现,或者使用第三方实现

我找到了几篇关于这个问题的文章和帖子,但都很老(2-3年)。例如,在许多地方都引用了项目,但不再维护该项目。因为我的应用程序应该支持Android 4+,所以我想问一下,是否有更好的方法来实现这一点

当然,拖放重新排序对用户来说是最方便的方式,但我对任何可行的解决方案都持开放态度(例如,使用带有上/下键的上下文菜单)

在Android 4+中提供物品重新排序的最佳方式是什么?


有没有一种默认/标准的方法可以做到这一点?

这个问题已经很老了,但是当你搜索“在Android中重新排序列表项的最佳方法”时,它会出现在第一个问题上,并且一直没有答案

OP要求查看
ListView
,因为在提问时,它们是最常用的。现在,最好使用
RecyclerView
,因为它比
列表视图
有许多优点。这些优点之一是我们需要实现重新排序,即
ItemTouchHelper

要了解如何实现
RecyclerView
,您可以查看以下示例:

实现重新排序的部分是附加到
回收视图
,如下所示:

mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView);

ItemTouchHelper touchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
            public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {

                Collections.swap(dataList, viewHolder.getAdapterPosition(), target.getAdapterPosition());
                mAdapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
                return true;
            }

            @Override
            public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
                // no-op
            }

            @Override
            public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
                return makeFlag(ItemTouchHelper.ACTION_STATE_DRAG,
                        ItemTouchHelper.DOWN | ItemTouchHelper.UP | ItemTouchHelper.START | ItemTouchHelper.END);
            }
});
touchHelper.attachToRecyclerView(mRecyclerView);

查看以下答案来管理Lolipop中出现的问题:我相信您可以使用附加到ItemTouchHelper和extended ItemTouchHelper.SimpleCallback的RecyclerView来侦听您为我保存了一天的事件。互联网上有很多关于这个话题的过时帖子。谢谢