Android Firebase orderByChild不起作用

问题描述 投票:0回答:1

我正在尝试使用orderByChild()按照平均评分对餐厅进行排序,但不是通过按平均评分对餐厅进行归类来返回餐厅,而不是。

这是我的代码:

public void filterQuality(){

    DatabaseReference mRatingDb = FirebaseDatabase.getInstance().getReference();

    Query topQualityQuery = mRatingDb.orderByChild("Average");
    topQualityQuery.addListenerForSingleValueEvent(new ValueEventListener() 

{

        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            Map <String, Double> topQualityMap = new HashMap<>();
            List list = new ArrayList();
            List list2 = new ArrayList();  

            for (DataSnapshot ds: dataSnapshot.getChildren()){

                topQualityMap.put(ds.getKey(), ds.child("Quality").child("Average").getValue(double.class));
                list.add(ds.child("Quality").child("Average").getValue(double.class));
                list2.add(ds.getKey());

                Log.d("Top Quality", "Value" + topQualityMap);
                Log.d("Top Quality", "Value" + list);
                Log.d("Top Quality", "Value" + list2);
            }

        }

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

        }
    });

}

这是我从地图和列表中得到的内容,这些都是我尝试调试的内容:

值[3.0]

值[茱莉斯纽卡斯尔旅馆]

值{Malmaison Newcastle = 2.0,Jurys Inn Newcastle = 3.0}

D /顶级质量:值[3.0,2.0]

D /最高质量:价值[Jurys Inn Newcastle,Malmaison Newcastle]

D /最高质量:价值{Malmaison Newcastle = 2.0,Jurys Inn Newcastle = 3.0,The County Hotel,Newcastle = 4.0}

值[3.0,2.0,4.0]

值[茱莉斯纽卡斯尔旅馆,马尔马逊纽卡斯尔,县酒店,纽卡斯尔]

这是我的基地:

Firebase

[如果有人知道为什么这不能正常工作,请提供帮助。谢谢。

java android firebase firebase-realtime-database rating
1个回答
0
投票

您需要指定要订购的值的完整路径。

所以:

DatabaseReference mRatingDb = FirebaseDatabase.getInstance().getReference();

Query topQualityQuery = mRatingDb.orderByChild("Quality/Average");
topQualityQuery.addListenerForSingleValueEvent(new ValueEventListener() {
  ...
© www.soinside.com 2019 - 2024. All rights reserved.