【问题标题】:Is there a function to get the new elements' order of RecyclerView after reorder it by drag and drop?是否有通过拖放重新排序后获取 RecyclerView 新元素顺序的功能?
【发布时间】:2019-04-06 22:30:03
【问题描述】:

我正在构建一个相册应用程序,我需要像这样使用拖放操作在我的 RecyclerView 中重新排序我挑选的图像

an example

其实我拖拽,但是我不知道如何获取新订单!

我试图访问我的适配器中的列表,但它有时是正确的,有时不是

for (int i = 0; i < adapter.Hunts.size(); i++) {
            Log.d(TAG, "onMove: "+i+"  "+Hunts.get(i).getName());
}

我希望在拖放后打印的输出与我的列表的顺序相同,有时它就像这样,但在拖放一些元素后会出错!

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    这篇文章解决了我的问题 here

    问题出在我的 ItemTouchHelper 内部

    我用过

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

    应该是

    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
                    int fromPosition = viewHolder.getAdapterPosition();
                    int toPosition = target.getAdapterPosition();
                    if (fromPosition < toPosition) {
                        for (int i = fromPosition; i < toPosition; i++) {
                            Collections.swap(Hunts, i, i + 1);
                        }
                    } else {
                        for (int i = fromPosition; i > toPosition; i--) {
                            Collections.swap(Hunts, i, i - 1);
                        }
                    }
    
                    adapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
                    return true;
                }
    

    重新排序我列表中的项目。

    【讨论】:

      猜你喜欢
      • 2011-11-01
      • 2020-09-30
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 2020-04-05
      • 1970-01-01
      相关资源
      最近更新 更多