第二个查询顺序在Firestore中移动到其他片段时不起作用

时间:2019-03-09 05:49:35

标签: java google-cloud-firestore

当我进行一段时间的活动并再次返回片段时。.一切都很好,片段中的.orderBy可以完美地下降,而.limit(5)可以加载10张照片,可以的是10张照片。但是,直到我使用底部导航移至home fragment,然后我再次回到profile fragment,然后发生了什么。.orderBy中的profile fragment成为ASCENDING,并且无法像第一个那样仅加载5张照片。然后我尝试移至activity,然后再次移至profile fragmentorderBy.limit运作良好,下降并完美加载10张照片(5乘5)。

我想知道是什么问题? 就像我移到其他片段并再次返回到onStart()时无法在profile fragment类中调用profile fragment一样,但是我找不到解决方案,除非移到活动了一段时间并且再次回到profile fragment,它会在配置文件片段onStart()方法中完美地呼唤我。 因为fragment to fragment不能完美地调用onStart()。和activity to fragment会完美地调用onStart() inside fragment,在此之前,我很抱歉,因为实际上这不是firestore问题。听起来我不了解活动生命周期,以及如何重新启动或恢复片段,我现在仍在搜索并且没有正确的答案。仍然可以学习这篇文章。

  

Method to refresh Fragment content when data changed ( like recall onCreateView)

     

Refresh Fragment at reload

我正在从profile fragment类的Firestore中检索10张照片,以加载到回收者视图中。和上面我提到的有问题的代码:

@Override
public void onStart() {
   super.onStart();

   contentList.clear();

   if (firebaseAuth.getCurrentUser() != null) {

     recyclerSeen.addOnScrollListener(new RecyclerView.OnScrollListener() {
       @Override
       public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                    super.onScrolled(recyclerView, dx, dy);

                    Boolean reachBottom = !recyclerView.canScrollVertically(-1);

                    if (reachBottom) {

                        loadMorePost();
                    }
                }
            });

            // RETRIEVING ALL PHOTOS
            Query firstQuery = firebaseFirestore
                    .orderBy("timestamp", Query.Direction.DESCENDING)
                    .limit(5);
                      firstQuery.addSnapshotListener(new EventListener<QuerySnapshot>() {
                @Override
                public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {

                    if (isFirstPageFirstLoad) {
                        lastVisible = documentSnapshots.getDocuments().get(documentSnapshots.size() - 1); // array 0, 1, 2
                    }

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

                        if (doc.getType() == DocumentChange.Type.ADDED) {

                            //String postId = doc.getDocument().getId();
                            ContentProfile contentSeen = doc.getDocument().toObject(ContentProfile.class);

                            /* how to store multi ArrayList */

                            if (isFirstPageFirstLoad) {
                                contentList.add(contentSeen);
                            } else {
                                contentList.add(0, contentSeen);
                            }

                            adapterSeen.notifyDataSetChanged();
                        }
                    }

                    isFirstPageFirstLoad = false;
                }
            });
        }


    }

    public void loadMorePost() {

        Query nextQuery = firebaseFirestore
                .collection("ProfileDashboard")
                // .document(currentUserId)
                // .collection("seenBy")
                .orderBy("timestamp", Query.Direction.DESCENDING)
                .startAfter(lastVisible)
                .limit(5);

        nextQuery.addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {

                if (!documentSnapshots.isEmpty()) {

                    lastVisible = documentSnapshots.getDocuments().get(documentSnapshots.size() - 1);
                    for (DocumentChange doc : documentSnapshots.getDocumentChanges()) {

                        if (doc.getType() == DocumentChange.Type.ADDED) {

                            //String postId = doc.getDocument().getId();
                            ContentProfile contentSeen = doc.getDocument().toObject(ContentProfile.class);
                            contentList.add(contentSeen);

                            adapterSeen.notifyDataSetChanged();

                        }
                    }
                }
            }
        });
    }

0 个答案:

没有答案