Почему запрос Firebase не выглядит как список? - PullRequest
0 голосов
/ 22 октября 2018

Я запрашиваю базу, основываясь на датах.Я нахожу свой запрос, но он не похож на пожарную базу.Порядок этого важен для меня.ссылка на другое изображение: firebase

 -LP6nkhewJCIGplnE6L4
adSoyad: 
"RUKIYE POLAT"
tarih: 
"18/10/2018,18:33:02"
-LP7EBqo6pabsweqH-4G
adSoyad: 
"RUKIYE POLAT"
tarih: 
"18/10/2018,20:32:56"
-LPBblB72HizL1LaJDIp
adSoyad: 
"RUKIYE POLAT"
tarih: 
"19/10/2018,16:58:45"
-LPCNo2DoDkArJJUQMCp
adSoyad: 
"RUKIYE POLAT"
tarih: 
"19/10/2018,20:33:01"
-LPF-MEziEXaoaNezNHQ
adSoyad: 
"RUKIYE POLAT"
tarih: 
"20/10/2018,8:45:03"
-LPGfoeIVNGq1MRmOEbY
adSoyad: 
"RUKIYE POLAT"
tarih: 
"20/10/2018,16:34:34"
-LPGfpCRniADm6sgGWyy
adSoyad: 
"RUKIYE POLAT"
tarih: 
"20/10/2018,16:34:34"
-LPK8Puua1kLv5eV7NOF
adSoyad: 
"RUKIYE POLAT"
tarih: 
"21/10/2018,8:42:44"
-LPLqoKyV_YiaMqKozxb
adSoyad: 
"RUKIYE POLAT"
tarih: 
"21/10/2018,16:40:42"
-LPLqosW54-5q8hUfNoK
adSoyad: 
"RUKIYE POLAT"
tarih: 
"21/10/2018,16:40:43"

образец, в Firebase Date: 20/10 / 2018,8: 32 есть еще один ребенок под Date: 20/10 / 2018,16: 39

Я тоже хочуприйти как в этом порядке.В соответствии с временем из базы данных, т.е. в порядке списка, как в базе данных. Но, во-первых, идет

Date: 20/10 / 2018,16: 39
Date: 20/10 / 2018,8: 32 

Но я хочу, как указано выше, сначала
Date: 20/10 / 2018,8: 32 Date: 20/10 / 2018,16: 39 еще одна ссылка на изображение: https://i.hizliresim.com/j691AL.jpg приложение

В базе данных много данных, поэтому я не могу это исправить.

DatabaseReference dbGelenler = db.getReference(kimlik+"/"+cekilensifre+"/"+cekilenisim);

Query query = dbGelenler.orderByChild("tarih").startAt(birincitarih).endAt(birincitarih + "\uf8ff");
        query.addListenerForSingleValueEvent(new ValueEventListener() {
    public void onDataChange(DataSnapshot dataSnapshot) {

        List<String> isimler = new ArrayList<String>();
        for (DataSnapshot anahtar : dataSnapshot.getChildren()) {
            String isim = anahtar.getValue(ornekogrencigetir.class).getAdSoyad();
            String tarih = anahtar.getValue(ornekogrencigetir.class).getTarih();
            HashMap<String, String> user = new HashMap<>();

            if (isimler.indexOf(isim) == -1) {
                user.put("hashdurum", "Giriş");
                String[] seperated;
                seperated = tarih.split(",");
                user.put("hashtarih", seperated[0]);
                user.put("hashsaat", seperated[1]);
            } else {
                user.put("hashdurum", "Çıkış");
                String[] seperated1;
                seperated1 = tarih.split(",");
                user.put("hashtarih", seperated1[0]);
                user.put("hashsaat", seperated1[1]);
            }
            isimler.add(isim);
            veriler.add(user);

Почему нет?запрос выполняется последовательно?Как я могу это исправить?

Редактировать: Решены ошибки:

Информация запроса отсортирована по времени.Несколько раз в моей базе данных не было 0 спереди.Это часы до 10 часов утра после 12 часов.Например, утра 9. Поэтому, сравнивая часы пожарной базы, обращайтесь к следующему.Пример ситуации с 9:12:15 до 15:24:54 здесь он сравнивает ситуацию 91 и 15, поэтому сначала он берет 15: 24: 54, а затем получает 9: 12: 15.

1 Ответ

0 голосов
/ 22 октября 2018

Дата / время хранятся в вашей базе данных в виде строкового значения в формате dd/MM/yyyy hh:mm:ss.Строки в Firebase упорядочены лексикографически, и, к сожалению, в используемом формате даты лексикографический порядок и хронологический порядок значений различаются.

Решение состоит в том, чтобы сохранить значение даты / времени в формате, который делаетПозвольте ему быть отсортированы так, как вы хотите.Два наиболее распространенных способа - сохранить их как временную метку (числовое значение, равное количеству миллисекунд с определенной даты) или в формате сортируемой строки (обычно 2018-10-20T16:34:34).

Подробнее об этомсм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...