当前位置: 首页 > 知识库问答 >
问题:

在Android Recycerer视图中重新排序项目后,位置没有更新

丁晋
2023-03-14

在我的应用程序中,我在回收器视图中显示了一个按钮列表,借助ItemTouchHelper.SimpleCallback,onMove函数,我可以重新排序按钮,但重新排序后位置不会更新。例如:-(如果我将按钮1从0位置拖到1位置,那么按钮1应该显示它的新位置是1,但它显示的是旧位置,即0)是否有任何东西在改变,以便我可以访问它并了解按钮的新位置。如有任何帮助,不胜感激。

ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP
                | ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END , 0) {
            @Override
            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
    
                int fromPosition = viewHolder.getAdapterPosition();
                int toPosition = target.getAdapterPosition();
    
                Collections.swap(datalist,fromPosition,toPosition);
    
                recyclerView.getAdapter().notifyItemMoved(fromPosition,toPosition);
                return false;
            }
    
    
            @Override
            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
    
            }
        };

共有1个答案

洪昊然
2023-03-14

这将根据视图的新位置更新视图。这是项更改事件,而不是结构更改事件。它表示位置上数据的任何反射都已过时,应该更新。

  recyclerView.getAdapter().notifyDataSetChanged();
 类似资料:
  • 我有一个具有2个视图\控制器的应用程序: 谢谢你。

  • 问题内容: 我有一个数据库SQLite,然后使用SimpleCursorAdapter,将值显示到列表视图中。但是,我想重新排列列表视图项,并在顶部显示ID#1,然后显示ID号2,依此类推。问题是,我无法掌握根据以下内容重新分配列表视图项的概念在内容提供商提供的某些ID号上。如果您知道,请分享。谢谢。 问题答案: 如果正确使用SQLite,则在查询数据库时应该能够执行“按ID排序”。 如果不是这种

  • 我正在对JSONArray进行排序,并在自定义列表视图中显示它们,但排序后数据在自定义列表视图中没有改变。 下面是fab按钮选择要执行的排序的代码: 在fab按钮中进行选择后,单击i sort json Array。下面是解析json数组的代码: 我使用`Adapter.NotifyDataSetChanged();但我的自定义列表不会影响排序。请建议我怎么做。

  • 问题内容: 我有以下方法: 然后,我在上面的代码的下面部分创建一个排序器,如下 这使我可以对特定的列进行排序并对该列进行排序。但是,排序器将在刷新后重置:刷新过程为: 然后 刷新后如何保留分类器。我不确定是否设置 导致分拣机失去其分拣机位置。 我曾尝试过使用get sortkeys,但这没有用,在刷新之前我也曾尝试过 然后申请 刷新后,但这没有用 这就是我尝试过的 我收到此错误: 问题答案: 您可

  • 在应用程序启动时,我试图使用以下代码通过查看加载更改单独视图的位置: 但是,这似乎无法直接在viewDidLoad中工作。如果我使用iAction将to指定给按钮,代码就会工作 我猜我这里遗漏了什么,但我不知道是什么。

  • 问题内容: 我在SO上看到了很多与此问题有关的问题,但都与我的情况无关。除了进行基本的CRUD操作外,我与SQL专家们无二。因此,我对此非常执着。 我有一张表。 在哪里; myTable始终总有10行。 因此,首先,假设myTable具有以下数据: 预期的功能应如下所示; 插入新 当插入新项目时,用户应该能够将其插入到他/她想要的任何位置。现在,我仅设法通过删除OrderPosition = 10