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