当前位置: 首页 > 知识库问答 >
问题:

恢复缓存数据RecycerView+Firestore

樊飞飙
2023-03-14

第一个活动是一个新闻提要屏幕,其中使用RecycerView+Firestore。我启用了设置离线选项。

问题:

 /*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个答案

施飞雨
2023-03-14

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

yourRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
    @Override
    public void onSuccess(DocumentSnapshot documentSnapshot) {
        //get data
        mCardFeedList.setAdapter(mAdapter);
    }
});
 类似资料:
  • 我写了一个Android应用。导出为签名APK发送通过邮件安装到设备。-不在市场。 在运行时,它将用类似的代码将他们的数据保存到内部存储: 据我所知-如果我错了,请纠正我-它将保存到/data/data/com。我的公司。myapp/文件名 因为它是用保存的,所以我不确定市场上或我的其他应用程序是否能看到它保存它。也许如果我创建一个具有相同签名的应用程序? 手机没有根。我已经尝试了很多备份,应用程

  • 数据缓存是指将一些 PHP 变量存储到缓存中,使用时再从缓存中取回。 它也是更高级缓存特性的基础,例如查询缓存 和内容缓存。 如下代码是一个典型的数据缓存使用模式。 其中 $cache 指向缓存组件: // 尝试从缓存中取回 $data $data = $cache->get($key); if ($data === false) { // $data 在缓存中没有找到,则重新计算它

  • setStorageSync 基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38 setStorageSync(string key, any data) ft.setStorage 的同步版本 参数 string key 本地缓存中指定的 key any data 需要存储的内容。只支持原生类型、Date、及能够通过JSON.stringify序列化的对象。 示例代

  • jd.setStorage(OBJECT) 异步接口,将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容。 OBJECT 参数说明: 参数 类型 必填 说明 key String 是 本地缓存中的指定的 key data Object/String 是 需要存储的内容 success Function 否 接口调用成功的回调函数 fail Function 否 接口调用失

  • 数据库恢复是指以备份为基础,与备份相对应的系统维护和管理操作。 系统进行恢复操作时,先执行一些系统安全性的检查,包括检查所要恢复的数据库是否存在、数据库是否变化及数据库文件是否兼容等,然后根据所采用的数据库备份类型采取相应的恢复措施。 数据库恢复机制设计的两个关键问题是:第一,如何建立冗余数据;第二,如何利用这些冗余数据实施数据库恢复。 建立冗余数据最常用的技术是数据转储和登录日志文件。通常在一个

  • 当数据丢失或意外损坏时,可以通过恢复已经备份的数据来尽量减少数据的丢失和破坏造成的损失。本节主要介绍如何对备份的数据进行恢复操作。 在《 MySQL mysqldump备份数据库》一节中介绍了如何使用 mysqldump 命令将数据库中的数据备份成一个文本文件,且备份文件中通常包含 CREATE 语句和 INSERT 语句。 在 MySQL 中,可以使用 mysql 命令来恢复备份的数据。mysq