2016-07-04 4 views
0

я искал два дня в настоящее время не изменится, но firebase тема действительно плохо обсуждается я думаю,Android firebase orderByKey ничего

Я хочу, чтобы отсортировать мои данные из БД firebase, чтобы получить веса от последнего к Старейший. Я пытался сделать это напрямую с ref.orderByKey и с Query refQuery = ref.orderByKey();, но ни один из них не работает.

Ключ - это дата с форматом 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) { 
    } 
}); 

Edit 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

Edit 2: ли это то, что ты просил меня?

screenshot

ответ

0

Хорошо, я уже решил.

Hashmap не сохраняет порядок своих товаров.Я использовал LinkedHashMap, и теперь он работает;)

+0

Наконец, он сработал. Отличная работа :). –

0
  • Попробуйте отформатировать дату в миллисекундах, а затем сохранить его в базе данных .
  • Лучше всего преобразовать дату в миллисекунду, а затем сохранить ее в базе данных, а затем преобразовать ее обратно при извлечении из db.

В противном случае,

  • Если вы установили дату в качестве ключа и не можете изменить его затем добавить времени как ребенок (где данные, такие как вес доступен) и применять сортировки по этому ребенок. Храните миллисекунду вовремя.
  • И использовать это: - 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 ")', и если его не работает, то покажите мне ваш снимок db-бэби-памяти (привязка структуры) –

+0

Вопрос нового пользователя - что такое привязка структуры? Как я могу это получить? И btw - почему не приказываетByKey не работает? – Nocri

Смежные вопросы