2016-07-04 5 views
0

は変更されません。最も古い。私はref.orderByKeyQuery refQuery = ref.orderByKey();で直接処理しようとしていましたが、動作していないようです。アンドロイドfirebase orderByKeyは、私は今、2日間を探していたが、firebaseトピックは本当に悪い私はにnewestから重みを取得するためにfirebase DBからの私のデータをソートしたい</p> <p>を推測する議論されているもの

キーはyy:MM:ddの形式の日付ですが、そのコードではデータがどのような方法でもソートされていません...何か助けてください。

screenshot

final Firebase ref = new Firebase("https://myapp.com/" + FirebaseAuth.getInstance().getCurrentUser().getUid() + "/weight/"); 

ref.orderByKey().addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     weights = new Double[(int)snapshot.getChildrenCount()]; 
     dates = new String[(int)snapshot.getChildrenCount()]; 
     Toast.makeText(getActivity(), "Wczytuje Pierwsze Dane"+snapshot.getValue(), Toast.LENGTH_LONG).show(); 
     int i = 0; 
     for (DataSnapshot child : snapshot.getChildren()) { 
      weights[i] = child.getValue(Double.class); 
      dates[i] = child.getKey(); 
      weightMap.put(child.getKey(), child.getValue(Double.class)); 
      i++; 
     } 
     testowy.setText(""+weightMap.size()); 

     if(weightMap.size()>1) 
     diffValue.setText(""+(weights[weightMap.size()-1] - weights[weightMap.size()-2])); 

     WeightListAdapter weightList = new WeightListAdapter(weightMap); 
     ListView weightListView = (ListView) view.findViewById(R.id.weightList); 
     weightListView.setAdapter(weightList); 
    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
    } 
}); 

編集1:

ref.orderByKey().addListenerForSingleValueEvent(new ValueEventListener() { 
              @Override 
              public void onDataChange(DataSnapshot snapshot) { 
               weights = new Double[(int)snapshot.getChildrenCount()]; 
               dates = new String[(int)snapshot.getChildrenCount()]; 

               int i = 0; 
               for (DataSnapshot child : snapshot.getChildren()) { 
                weights[i] = child.getValue(Double.class); 
                dates[i] = dt.format(Long.parseLong(child.getKey())); 
                weightMap.put(child.getKey(), child.getValue(Double.class)); 
                i++; 
               } 

私はquestion.Theスナップショットを明確にするための日付を変換せずに立っていたソートされていないしています。なぜ...?

screenshot

編集2: あなたは私に尋ねた何本か?

screenshot

答えて

0

[OK]を使用しますが、私はそれを解決してきました。

ハッシュマップではアイテムの順序が維持されません。代わりにLinkedHashMapを使用しましたが、現在は動作しています)

+0

最後に、それは働いた。よくやった :)。 –

0
  • ミリ秒単位であなたの日付をフォーマットしてから 、それをデータベースに保存するようにしてください。
  • ミリ秒単位で日付を変換してデータベースに保存し、データベースから取得したときにそのデータを変換する方がよいでしょう。それ以外の場合は

  • あなたのキーとして日付を設定しており、子として 時間を追加し、それを変更する(体重などのデータが利用可能な場合)、その上で並べ替えを適用することができない場合子。ミリ秒で時間を保存します。
  • そして、この使用: - ref.orderByChild("time").addLis...更新

  • この

    この

    final Firebase ref = new Firebase("https://myapp.com/" + FirebaseAuth.getInstance().getCurrentUser().getUid() + "/weight/"); 
    
    • を交換します

      final Firebase ref = new Firebase("https://myapp.com/" + FirebaseAuth.getInstance().getCurrentUser().getUid() + "/weight/hiper-diet-keeper/UBwsiRUqZrarupNRS/"); 
      

ref.orderByKey()

+0

ありがとう、私には完璧ですが、まだソートされません。 私は秒以内に質問を更新します。 – Nocri

+0

'ref.orderByKey()'を 'ref.orderByChild(" time ")'に置き換えてみてください。それが機能していなければ、firebase dbのスナップショットを表示してください(構造のスナップ) –

+0

初心者の質問 - 構造のスナップは何ですか?どうすれば入手できますか? btw - なぜorderByKeyは動作しませんか? – Nocri

関連する問題