Android firebase数据库按值排序工作错误

Android firebase数据库按值排序工作错误,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,所以我有一个商店数据库,每个商店的名字前面都有一个数字。它们是按随机顺序添加的,但我希望它们按1到213的顺序显示。我的问题是当我使用orderbyvalue()时,它会像这样显示它们 1商店 10商店 11商店 12商店 13商店 14商店 15商店 16商店 17商店 18商店 19商店 2商店 20商店 21商店 22商店 等等。我需要它们显示1,2,3,4,5等,而不是1,10,11,12,13等 我应该用什么来解决这个问题呢?正如John评论的那样,您得到的顺序是预期的:因为您存储

所以我有一个商店数据库,每个商店的名字前面都有一个数字。它们是按随机顺序添加的,但我希望它们按1到213的顺序显示。我的问题是当我使用
orderbyvalue()
时,它会像这样显示它们

  • 1商店
  • 10商店
  • 11商店
  • 12商店
  • 13商店
  • 14商店
  • 15商店
  • 16商店
  • 17商店
  • 18商店
  • 19商店
  • 2商店
  • 20商店
  • 21商店
  • 22商店
等等。我需要它们显示1,2,3,4,5等,而不是1,10,11,12,13等


我应该用什么来解决这个问题呢?

正如John评论的那样,您得到的顺序是预期的:因为您存储的是字符串,所以节点是按字典顺序排列的

如果您想按数字顺序排列,则必须将值存储为数字,或者(在您的情况下,更可能)将值存储为按数字顺序排列的格式。例如

  • 01商店
  • 02商店
  • 10商店
  • 11商店
  • 19商店
  • 20商店
  • 21商店
  • 22商店

  • 001商店
  • 002商店
  • 010店
  • 011商店
  • 019商店
  • 020商店
  • 021商店
  • 022商店

在这种情况下,字符串的填充/前缀是很正常的。其中一个主要缺点是,在开始项目时,您必须确定数字要使用多少个字符。

前导零可能是一种临时解决方案,但就用户体验而言,这是错误的。您必须实现排序功能。此外,如果您的系统需要处理超过999个存储区,则不必为此触摸代码。

您将存储为字符串,因此您看到的是正确的顺序。您需要有数字字段和顺序。请发布java代码。这可以通过使用for语句轻松实现。谢谢john的帮助谢谢Hanks。我没想过要加零