第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

orderByChild 查詢不適用于 addListenerForSingleValueEvent

orderByChild 查詢不適用于 addListenerForSingleValueEvent

拉莫斯之舞 2023-09-20 16:23:56
我嘗試按子值“月”對(duì)數(shù)據(jù)庫(kù)進(jìn)行排序,但 orderByChild 不起作用。當(dāng)我使用 onChildEventListener 而不是 addListenerForSingleValueEvent 時(shí)它可以工作但我不想使用 childEventListener這是我的數(shù)據(jù)庫(kù)"Stats" : {    "2019" : {      "YxdZZHGy3rW4xdjORfk2i5mFRYG2" : {        "August" : {          "Weight" : {            "Body_Fat" : "29",            "Month" : 8,            "Weight" : "68"          }        },        "October" : {          "Weight" : {            "Body_Fat" : "29",            "Month" : 10,            "Weight" : "67"          }        },        "September" : {          "Weight" : {            "Body_Fat" : "28.5",            "Month" : 9,            "Weight" : "65.5"          }        }      }    }},這是java代碼 userStatsDatabase.addListenerForSingleValueEvent(new ValueEventListener() {        @Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            if (dataSnapshot.exists()) {                for (DataSnapshot ds : dataSnapshot.getChildren()) {                    Query query = userStatsDatabase.child(ds.getKey()).child("Weight").orderByChild("Month").limitToFirst(12);                    query.addListenerForSingleValueEvent(new ValueEventListener() {                        @Override                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {                            if (dataSnapshot.exists()) {                                Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();                                pastMonthsBodyFat = Float.parseFloat(map.get("Body_Fat").toString());                                pastMonthsWeight = Float.parseFloat(map.get("Weight").toString());                                pastWeightList.add(pastMonthsWeight);                                pastBodyFatList.add(pastMonthsBodyFat);                                Toast.makeText(Stats.this, map.get("Month").toString(), Toast.LENGTH_SHORT).show();                            }Toast 應(yīng)該按順序打印月份值 8,9,10,但它打印的是值 8,10,9
查看完整描述

2 回答

?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果userStatsDatabase指向此 JSON(對(duì)于特定用戶):


  {

    "August" : {

      "Weight" : {

        "Body_Fat" : "29",

        "Month" : 8,

        "Weight" : "68"

      }

    },

    "October" : {

      "Weight" : {

        "Body_Fat" : "29",

        "Month" : 10,

        "Weight" : "67"

      }

    },

    "September" : {

      "Weight" : {

        "Body_Fat" : "28.5",

        "Month" : 9,

        "Weight" : "65.5"

      }

    }

  }

然后你可以按以下順序獲得結(jié)果Month:


Query query = userStatsDatabase..orderByChild("Weight/Month");

query.addListenerForSingleValueEvent(new ValueEventListener() {

  @Override

  public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

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

      System.out.println(monthSnapshot.getKey()); // August, September, October

      System.out.println(monthSnapshot.child("Weight/Month").getValue(Long.class)); // 8, 9, 10

    }

  }

  ...


查看完整回答
反對(duì) 回復(fù) 2023-09-20
?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊

我放棄了使用 Firebase 查詢對(duì)數(shù)據(jù)進(jìn)行排序,我確信我的代碼沒有任何問題,無論如何,我決定使用 Collections.sort 將數(shù)據(jù)添加到 arrayList“之后”對(duì)其進(jìn)行排序,并且它有效。謝謝


PS,如果有人知道為什么我的 firebase 查詢不起作用,我仍然想知道原因:S


這是代碼,以防其他人需要對(duì) arrayList 中的數(shù)據(jù)進(jìn)行排序


//sort the item  to show months in ascending order

Collections.sort(items, new Comparator<PastMonthsWeightStats>(){

    @Override

    public int compare(PastMonthsWeightStats obj1, PastMonthsWeightStats obj2) {

        // ## Ascending order

        // return obj1.firstName.compareToIgnoreCase(obj2.firstName); // To compare string values

        //return Float.valueOf(obj1.getMonthNumber()).compareTo(Float.valueOf(obj2.getMonthNumber())); // To compare integer values


        // ## Descending order

        // return obj2.firstName.compareToIgnoreCase(obj1.firstName); // To compare string values

        return Integer.valueOf(obj2.getMonthNumber()).compareTo(Integer.valueOf(obj1.getMonthNumber())); // To compare integer values

    }

});   


查看完整回答
反對(duì) 回復(fù) 2023-09-20
  • 2 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)