恢复缓存数据RecyclerView + Firestore

问题描述 投票:1回答:1

第一个活动是News Feed屏幕,其中使用了RecyclerView + Firestore。我启用了“设置关闭”选项。

问题:

因为它是应用程序主页和新闻广播,所以我希望应用程序在内部扫描和检索Firestore数据时显示缓存的数据。喜欢Instagram,Twitter等...

因为当前打开此活动时,它已被称为Firestore查询并使用RecyclerView装入数据。

在加载Firestore的新数据时,它可以通过某种方式显示Recyclerview上次更新的缓存数据。

因为当互联网连接是移动的时候,我们国家的质量很差。如果我最初离开调用Recyclerview,我会在很长一段时间内加载Progressbar,直到连接稳定。

我的代码是:适配器Firestore + RecyclerView

编辑代码:

 /*Firebase*/
        mDb = FirebaseFirestore.getInstance();
        mDb.collection("IndexTimeline_User").document(mCurrentUser.getUid()).collection("Posts").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot documentSnapshots) {

                mQuery = documentSnapshots.getQuery();
                mCardFeedList.setAdapter(mAdapter);


            }
        });
        mDb.setFirestoreSettings(settings);


        /* Recycler */
        mCardFeedList = (RecyclerView) view.findViewById(R.id.explore_tab1_list);
        mCardFeedList.setHasFixedSize(true);
        mCardFeedList.setItemViewCacheSize(20);
        mCardFeedList.setDrawingCacheEnabled(true);

        mAdapter = new PostsExploreTab1Adapter(mQuery, this){

            @Override
            protected void onDataChanged() {

                if (getItemCount() == 0) {
                    mCardFeedList.setVisibility(View.GONE);
                    mProgressBar.setVisibility(View.GONE);
                    //mTxtVazio.setVisibility(View.VISIBLE);

                } else {
                    mCardFeedList.setVisibility(View.VISIBLE);
                    mProgressBar.setVisibility(View.GONE);
                    //mTxtVazio.setVisibility(View.GONE);
                }


            }
        };

        llmanager = new LinearLayoutManager(getActivity());
        mCardFeedList.setLayoutManager(llmanager);




        /*INICIADO O RECYCLERVIEW E ADAPTER*/
        if (mAdapter != null) {
            mAdapter.startListening();

        }

谢谢。

android firebase google-cloud-firestore
1个回答
0
投票

从数据库获取数据时,请使用addOnSuccessListener并仅在从数据库加载数据时设置适配器。这意味着您将从缓存中读取数据,并且仅在新数据完全加载时才会读取,然后才会将其添加到RecyclerView中。您的代码应如下所示:

yourRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
    @Override
    public void onSuccess(DocumentSnapshot documentSnapshot) {
        //get data
        mCardFeedList.setAdapter(mAdapter);
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.