恢复缓存数据RecyclerView + Firestore

时间:2017-12-20 17:54:26

标签: android firebase google-cloud-firestore

第一个活动是新闻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();

        }

感谢。

1 个答案:

答案 0 :(得分:0)

从数据库获取数据时,请使用>>> collections.Counter(x for a in A for x in a) Counter({0: 12, 1: 8}) 并仅在从数据库加载数据时设置适配器。这意味着您将从缓存中读取数据,并且仅在新数据完全加载时才会读取,然后才会将其添加到RecyclerView中。您的代码应如下所示:

addOnSuccessListener