小编swe*_*rly的帖子

Diff Util dispatchUpdatesTo不将更新分派给RecyclerView适配器

我有一个列表,我按两个不同的变量之一,对象的名称和对象的日期排序.我在操作栏中有一个排序按钮,其中有一个弹出窗口,可让您选择要使用的排序方法.选择其中一个选项会通知适配器使用新的比较器对列表进行排序,只要比较器不相同即可.

默认排序是按名称进行的,当我切换到按日期排序时,列表更新就好了.但是,当我尝试切换回按名称排序时,dispatchUpdatesTo方法似乎不会将更新分派给适配器,即使我可以看到比较列表不同并且DiffUtil已正确识别更改.结果如下,您可以看到detectMoves为true:diffResult

有人知道我的适配器不会更新的任何原因吗?如果需要,我可以发布代码,但我认为这非常简单

java sorting android

5
推荐指数
0
解决办法
647
查看次数

C++ STL优先级队列未正确排序

我想要一个Waypoint*对象的向量,这些对象被排序,以便具有最低距离的航点位于队列的顶部.

这是我的比较课:

class WaypointCompare {
    public:
        bool operator()(Waypoint* left, Waypoint* right) const {
            return left->getDistance() < right->getDistance();
        }
};
Run Code Online (Sandbox Code Playgroud)

这是我如何初始化队列:

std::priority_queue<Waypoint*, std::vector<Waypoint*>, WaypointCompare> queue;
Run Code Online (Sandbox Code Playgroud)

每当我更新航点的距离时,我的队列似乎都没有正确重新排序.与此示例一样,距离值最小的Waypoint对象不应该位于队列的后(顶部)(索引10)吗?这是一个队列调试的图像,我已经注意到我认为是错误的:

在此输入图像描述

我认为这可能与我对pq的不稳定理解有关,或者我正在初始化到HUGE_VAL的所有距离.

c++ stl priority-queue

2
推荐指数
1
解决办法
529
查看次数

标签 统计

android ×1

c++ ×1

java ×1

priority-queue ×1

sorting ×1

stl ×1