Добавлять новый предмет на 0 позицию в пожарном депо? - PullRequest
0 голосов
/ 02 января 2019
mFirestore.collection("notifications").orderBy("timestamp",Query.Direction.DESCENDING).addSnapshotListener(new EventListener<QuerySnapshot>(){
@Override
public void onEvent(@javax.annotation.Nullable QuerySnapshot documentSnapshots,@javax.annotation.Nullable FirebaseFirestoreException e){
        if(e!=null){
        Log.d(TAG,"Error : "+e.getMessage());
        }

        assert documentSnapshots!=null;

        for(DocumentChange doc:documentSnapshots.getDocumentChanges()){

        if(doc.getType()==DocumentChange.Type.ADDED){
        String doc_id=doc.getDocument().getId();
        NotificationModel Notifications=doc.getDocument().toObject(NotificationModel.class).withDocId(doc_id);
        allNotifications.add(Notifications);
        notificationAdapter.notifyDataSetChanged();

        }
        }
        }
        });

Я пытаюсь сделать это, когда в коллекцию firestore добавляется новый документ, он будет добавлен в 0 позиции.но вместо 0 позиции новый элемент добавляется в последнюю позицию.

Ответы [ 3 ]

0 голосов
/ 03 января 2019

Чтобы решить эту проблему, измените следующие строки кода

allNotifications.add(Notifications);

на

allNotifications.add(0, Notifications);

В соответствии с официальной документацией, касающейся метода ArrayList add () :

Вставляет указанный элемент в указанную позицию в этом списке.

0 голосов
/ 04 января 2019

Я решаю Мой запрос, изменяя allNotifications.add(Notifications);

на allNotifications.add(doc.getNewIndex(),Notifications);

0 голосов
/ 02 января 2019

Документы в коллекции Firestore хранятся не в виде массива, а скорее в виде карты, что означает, что вы не можете вставить документ в определенную позицию

Вы можете посмотреть здесь https://firebase.google.com/docs/firestore/data-model

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