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

如何在Firebase中按日期时间订购适配器[重复]

轩辕鸿祯
2023-03-14

ref.orderByChild("userOrderDateTime").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                    UserOrder userOrder = dataSnapshot.getValue(UserOrder.class);
                    list.add(userOrder);
                }

                adapter.notifyDataSetChanged();

                if (list.size() == 0) {
                    gifImageView.setVisibility(GifImageView.VISIBLE);
                    userOrderBlankText.setVisibility(View.VISIBLE);
                    btnDeleteUserOrderItems.setVisibility(Button.INVISIBLE);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });

共有1个答案

居晗日
2023-03-14

正如我在屏幕截图中看到的那样,UserOrderDateTime属性是o类型字符串,这意味着顺序将始终按词典顺序排列。要获得正确的顺序,应该在该字段中存储时间戳值,而不是字符串。要做到这一点,请看我在以下帖子中的回答:

  • 向Firebase实时数据库添加新值时如何保存当前日期/时间

一旦您更改了字段的类型,您的元素将正确排序。

 类似资料:
  • 我有一张日期表 我想按时间顺序点菜。我发现另一个线程推荐使用: 但输出不能正确地将最新的排序为最旧的。

  • 问题内容: 我正在尝试从Firebase订购数据,因此最近的帖子位于顶部(如Instagram),但我无法使其正常运行。我应该使用服务器时间戳吗?是否有一个“ createdAt”字段? 问题答案: 仅对数组使用 reverse() 不足以包含所有内容。您需要考虑不同的事情: 在检索数据时进行限制,请使用 append() ,然后使用 reverse() 可以节省时间。您不需要每次都删除所有数组。

  • 我得到了一个有这样数据的表: 如何选择具有适当id的行,其中date_from和date_to之间的s_date最接近date_from\date_to范围?在我的情况下,最合适的行必须是: 谢谢!

  • 问题内容: 我在一个包含日期/时间的网格中有一个字段,我需要知道该日期和当前日期/时间之间的区别。这样做的最佳方法是什么? 日期存储为。 问题答案: 这将为您提供两个日期之间的时差,以毫秒为单位 在您的示例中, 您需要确保这是一个有效的对象。 这样的事情可能会为您工作 即变成,这是构造函数可以理解的格式。