在Firestore中的0位置添加新项目?

时间:2019-01-02 07:28:47

标签: java android firebase android-studio google-cloud-firestore

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 :(得分:0)

firestore集合中的文档不是存储为数组,而是以地图方式存储,这意味着您不能在特定位置插入文档

您可以在这里https://firebase.google.com/docs/firestore/data-model

答案 1 :(得分:0)

要解决此问题,请更改以下代码行

allNotifications.add(Notifications);

allNotifications.add(0, Notifications);

根据有关ArrayList的add()方法的官方文档:

  

将指定元素插入此列表中的指定位置。

答案 2 :(得分:0)

我通过更改此allNotifications.add(Notifications);

解决了我的查询

对此allNotifications.add(doc.getNewIndex(),Notifications);