首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RecyclerView (FirestoreRecyclerOptions)在活动的onCreate中显示为已填充,但在按下back按钮时为空

RecyclerView是Android开发中常用的控件,用于展示大量数据列表。它是一个灵活的容器,可以根据需要自定义布局和样式。

FirestoreRecyclerOptions是Firebase提供的一个类,用于配置RecyclerView与Firestore数据库的交互。它可以设置查询条件、排序规则等参数,以便从数据库中获取数据并在RecyclerView中显示。

在活动的onCreate方法中,我们可以通过以下步骤来显示已填充的RecyclerView:

  1. 创建一个RecyclerView实例,并设置布局管理器(如LinearLayoutManager或GridLayoutManager)和适配器。
  2. 创建一个FirestoreRecyclerOptions实例,并配置查询条件和排序规则。
  3. 使用FirestoreRecyclerOptions实例和适配器创建一个FirestoreRecyclerAdapter实例。
  4. 将FirestoreRecyclerAdapter实例设置为RecyclerView的适配器。

以下是一个示例代码:

代码语言:txt
复制
// 导入所需的类
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.firebase.ui.firestore.FirestoreRecyclerAdapter;

// 在活动的onCreate方法中
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // 创建RecyclerView实例并设置布局管理器
    RecyclerView recyclerView = findViewById(R.id.recyclerView);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    // 创建FirestoreRecyclerOptions实例并配置查询条件和排序规则
    Query query = FirebaseFirestore.getInstance().collection("your_collection");
    FirestoreRecyclerOptions<YourModelClass> options = new FirestoreRecyclerOptions.Builder<YourModelClass>()
            .setQuery(query, YourModelClass.class)
            .build();

    // 创建FirestoreRecyclerAdapter实例并设置为RecyclerView的适配器
    FirestoreRecyclerAdapter<YourModelClass, YourViewHolder> adapter = new FirestoreRecyclerAdapter<YourModelClass, YourViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull YourViewHolder holder, int position, @NonNull YourModelClass model) {
            // 在这里绑定数据到ViewHolder中的视图
        }

        @NonNull
        @Override
        public YourViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            // 在这里创建ViewHolder并返回
        }
    };
    recyclerView.setAdapter(adapter);
}

当按下返回按钮时,如果RecyclerView为空,可能是由于以下原因:

  1. 数据库中没有匹配的数据。请确保Firestore数据库中的"your_collection"集合中有数据,并且满足查询条件。
  2. 数据库查询出错。请检查查询条件是否正确,并确保Firestore数据库的读取权限设置正确。
  3. 适配器中的数据绑定出错。请检查onBindViewHolder方法中的数据绑定逻辑是否正确。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android RecyclerView使用简述

六、RecyclerView多布局使用   在前面的使用我们操作写适配器代码,都是一个item布局,而有时候数据不同需要显示布局也不同,就存在多布局情况,这种情况应该怎么处理呢?...,正常情况这个RecyclerView隐藏,可以通过点击group布局控制RecyclerView显示或隐藏,里面还用了一个图标来增加显示和隐藏效果,drawable新增ic_right.xml...View.GONE : View.VISIBLE); });   创建分组item布局时候我设置RecyclerView隐藏点击group所在LinearLayout布局...八、RecyclerView动态更改数据   之前我们显示数据都是直接显示,后面使用过程并没有对数据进行更改,那么下面我们来进行更改试试看。...,设置状态false,然后通过notifyDataSetChanged()方法刷新适配器所有数据,最后修改一选中数字和显示文字,这样就结束了,看看效果图如何。

2.4K21

《移动互联网技术》第五章 界面开发: 掌握Activity基本概念,Activity堆栈管理和生命周期

采用这种界面管理方式,确保了系统每次都只有一个界面在前台运行,减少了整个系统内存开销。 默认情况,当一个活动启动另一个活动,两个活动都放置同一个任务,即压入同一个返回栈。...当用户按后退键,后压入活动将从返回栈中弹出,前面压入活动显示屏幕上。...(2) 暂停状态 活动处于暂停状态活动界面部分可见,用户不能够对它进行操作,比如点击删除图片按钮图片显示界面(活动)上会弹出一个对话框,对话框让用户确认是否删除图片,对话框没有占据整个屏幕,因此显示图片界面...界面上各种交互操作通常定义各种事件,比如:按按钮屏幕上通过各种滑动来滚动显示或切换界面等等。所有这些操作都通过系统提供事件处理机制来实现。...资源路径drawable下面添加一个文字选择器xml文件,selector标签,加入两个item标签,当选中状态“真”,设置文本选中颜色(设置粉色),当选中状态“假”,设置正常状态颜色

18710
  • kotlin-android-extensions插件也被废弃了?扶我起来

    = "Hello" } } 可以看到,这里我们不再需要调用findViewById()函数去获取控件实例,而是直接调用该控件xml定义id名称,就能够设置其显示内容了。...按钮将字节码反编译成Java代码。...接下来就更加简单了,调用Binding类getRoot()函数可以得到activity_main.xml根元素实例,调用getTextView()函数可以获得idtextView元素实例。...接下来不一样地方在于,由于我们是onCreateView()函数中加载布局,那么理应在与其对应onDestroyView()函数对binding变量置,从而保证binding变量有效生命周期是...merge标签,这就表示当有任何一个地方去include这个布局,会将merge标签内包含内容直接填充到include位置,不会再添加任何额外布局结构。

    3.4K31

    Android入门教程 | Fragment 基础概念

    当执行此类片段事务,也可将其添加到由 Activity 管理返回栈 — Activity 每个返回栈条目都是一条发生片段事务记录。借助返回栈,用户可以通过按返回按钮撤消片段事务(后退)。...在此情况,需列表布局创建包含 RecyclerView 片段。...宿主 Activity 停止,或片段已从 Activity 移除,添加到返回栈。停止片段仍处于活动状态(系统会保留所有状态和成员信息)。...Fragment,然后当我们点击 back 按钮时候会自动帮我们实现退栈操作。...该回调我们可以将 context 转化为 Activity 保存下来,从而避免后期频繁调用getAtivity() 获取 Activity 局面,避免了某些情况 getAtivity() 异常

    3.5K40

    AndroidRecyclerView嵌套RecyclerView

    前言 这两天在做一个新APP,考虑用户体验上要一个两级列表嵌套,于就想看看RecyclerView是否能做出这样效果,自己写了一个DEMO来做一测试,最后效果还是比较满意。...下面我就说一RecyclerView嵌套RecyclerView实现。...---- 创建最底层RecyclerView 布局文件 我们layout新建一个rcl_item.xml ? <?xml version="1.0" encoding="utf-8"?...,当点击测试按钮后,源数据集里面名称会后面加上“被点击了”字符显示出来,可以看到显示效果 ?...通过上面两个图我们可以看出来,点击Item列表里面的测试按钮后,我们显示已经更新了,并且重新点击显示数据,我们源数据集也随之更新数据了。 -END-

    7.7K30

    记一次全民K歌crash定位过程

    所以分析这个问题前,我们先来简单了解一RecyclerView布局流程及缓存策略 ?...LayoutManageronLayoutChildren方法处理,它会根据当前子ViewViewHolder状态将其回收至各个缓存队列,然后寻找锚点并往上下两个方法进行填充,当需要子View,...对象进行设置,使得ViewHolder.isScraptrue mChangedScrap 也未与RecyclerView分离,数据发生变化,用于动画执行前preLayout阶段。...再看堆栈position=2,就可以锁定是Footer异常了,因为除了列表,Footerposition2,其它几个类型都不会出现为2情况。...通过打开开发者选项“不保留活动”,复现了这样场景,恢复后产生了2个FeedSubFragment,一个正常显示,另一个从xml加载布局后没有发起数据请求,于是页面一直是loading默认状态,

    2.2K30

    安卓入门-第三章-安卓常用控件使用方式

    : 当前活动继承AppCompatActivity 以及实现了View.OnClickListener(这是定义View类公共接口) -> 重写onCreate()方法 -> {调用引入布局方法:...,然后在按钮点击事件里调用EditTextgetText()方法获取到输入内容,再调用toString()方法转换成字符串,最后还是老方法,使用Toast将输入内容显示出来。  ...源路径是可以通过活动方法修改,那么一来可能就会导致改变显示图片  ImageView是用于界面上展示图片一个控件,它可以让我们程序界面变得更加丰富多彩。...,通过调用ImageViewsetImageResource()方法将显示图片改成img_2,现在重新运行程序,然后点击一按钮,就可以看到ImageView显示图片改变了。...,调用活动方法就能改变拖动条的当前值,达到最大值,拖动条相当于就到了100%  ProgressBar用于界面上显示一个进度条,表示我们程序正在加载一些数据。

    1.8K20

    安卓-碎片使用入门

    想象我们正在开发一个新闻应用,其中一个界面使用RecyclerView展示了一组新闻标题,当点击了其中一个标题,就打开另一个界面显示新闻详细内容。...这样就完成了活动动态添加碎片功能,重新运行程序,可以看到和之前相同界面,然后点击一按钮,效果如图4.6所示。 ?... 在上一小节,我们成功实现了向活动动态添加碎片功能,不过你尝试一就会发现,通过点击按钮添加了一个碎片之后,这时按Back键程序就会直接退出。...现在重新运行程序,并点击按钮将AnotherRightFragment添加到活动,然后按Back键,你会发现程序并没有退出,而是回到了RightFragment界面,继续按Back键,RightFragment...4.2.4 碎片和活动之间进行通信  虽然碎片都是嵌入活动显示,可是实际上它们关系并没有那么亲密。

    1.4K20

    一篇博客理解Recyclerview使用

    ② 提供了一种插拔式体验,高度解耦,异常灵活,针对一个Item显示RecyclerView专门抽取出了相应类,来控制Item显示,使其扩展性非常强。...,然而在日常开发,响应点击事件无疑都是必须,虽然它没有提供,但是我们可以手动添加OnItemClickListener,我们可以Adapter添加这个回调接口: 例子2:可以点击RecyclerView...实现滚动内容联动 例子3:RecyclerView制作相册效果 效果:原工程基础上进行修改,改成相册效果,即上面显示一张大图,下面的RecyclerView做为图片切换指示器。...,然后onTouchEvent,监听ACTION_MOVE,用户手指滑动,不断把当前第一个View回调回去 关于为什么getChildAt(0)和getChildPosition()可用,起初我以为有...,就是我们适配器绑定ViewHolder方法需要重新给我们itemView布局设置height,这里是生成随机数来设置高度

    67030

    移动开发作业二

    作业目标将recyclerView每个item增加点击功能,点击后跳转到一个新view展示信息技术说明Fragment: 代表应用UI一个可重用部分,可以嵌入活动。...RecyclerView: 用于高效显示大量数据集UI组件,支持滑动和回收视图。Adapter: 用于RecyclerView填充数据桥梁,它将数据集与视图连接起来。...LinearLayoutManager: 管理RecyclerView布局,这里使用垂直方向布局。Intent: 用于不同组件之间传递消息,这里用于启动新活动并传递数据。...关键代码解析设置点击监听器MessageAdapteronBindViewHolder方法,我们messageItem设置了一个点击监听器:点击事件,我们创建了一个Intent来启动ChatActivity...并传递了消息详情接收和使用传递数据ChatActivity,我们需要接收并使用传递过来数据:onCreate方法,我们通过getIntent().getStringExtra方法获取由MessageAdapter

    16221

    Android-活动启动模式

    standard standard是活动默认启动模式,standard模式,每当启动一个新活动,他就会在返回栈入栈,并处于栈顶位置,对于使用standard模式活动,系统不会在乎这个活动是否已经返回栈存在...当然也只需要按一Back键就可以退出。 不过当MainActivity并未处在栈顶位置,那么启动MainActivity,还是会创建新实例。...新建一个SecondActivity活动,让Main按钮启动Second,Second启动Main, 可以看到按三次按钮以后,系统创建了两个不同MainActivity活动, 由于Second...然后按Back键,直接从Third返回到Main了,在按Back又返回到Second了,在按Back才是退出程序了。...因为Main和Third是一个返回栈里面的,当在Third按Back键,Third会出栈,那么Main成为栈顶活动,就会显示出来, 在按Back这时返回栈已经空了,于是就显示另一个返回栈里面的内容

    68520

    中招!Android 基础面试常常吊死在这几个问题上……

    Activity 生命周期中,无论是应用程序启动,还是Activity 被销毁然后重新创建(例如在配置更改期间),都会调用一次 onCreate() 方法。...应聘者:当 UI 停止响应超过5秒以上,通常会因为阻塞主线程而出现 ANR 对话框。避免遇到ANR错误,应将尽可能多任务移出主线程。...RecyclerView 显示较长项目列表。假设我们要显示100行项目。一种简单方法是只创建100个视图,每行一个视图,然后将它们全部布局。...但是,当开始滚动并需要开始显示下一个视图时会发生什么?同样,一种简单方法是需要显示每个新行创建一个新视图。...ViewHolder模式:Recyclerview实现了ViewHolders模式,但在ListView 不是必需RecyclerView 滚动回收并重用单元格。

    2K20

    Activity 不只有跳转。功能篇(一)

    ,达到了共享这个实例,单个程序如:A->B(模式SingleInstance)->C,创建A实例,创建B实例(新返回栈),创建C实例,当点击back,会C弹出栈,显示A,再次点击back键,A...因为onCreate()调用该方法是系统正在创建一个新Activity实例或重新创建一个以前实例,所以您必须Bundle尝试读取之前检查该状态是否。...系统onRestoreInstanceState()只有存在保存状态情况才会恢复,因此您不需要检查是否Bundle: public void onRestoreInstanceState(Bundle...方法 当ActivityALaunchModeSingleTop: 如果ActivityA栈顶,且现在要再启动ActivityA,这时会调用onNewIntent()方法 ,生命周期顺序onCreate...: 如果ActivityA已经堆栈,那么此时会调用onNewIntent()方法,生命周期调用顺序onCreate--->onStart--->onResume---按Home键>onPause

    1.1K20

    安卓入门-第二章-探究活动

    界面的最顶部是一个标题栏,里面显示着我们刚才注册活动指定内容。标题栏下面就是布局文件first_layout.xml编写界面,可以看到我们刚刚定义按钮。...活动创建步骤小结: 我们以手动创建活动例: 创建一个活动 -> 创建布局 -> 活动中加载布局 -> 注册活动 -> 配置程序配置主活动 2.2.4 活动中使用Toast  Toast是Android...得到按钮实例之后,我们通过调用setOnClickListener()方法按钮注册一个监听器,点击按钮就会执行监听器onClick()方法。...而每当我们按Back键或调用finish() 方法去销毁一个活动,处于栈顶活动会出栈,这时前一个入栈活动就会重新处于栈顶位置。系统总是会显示处于栈顶活动给用户。  ...然后FirstActivity界面再次按Back键,这时当前返回栈已经空了,于是就显示了另一个返回栈栈顶活动,即SecondActivity。

    2.9K20

    Android入门教程之Activity(生命周期,启动...)

    2. onCreate 和 onStart 区别 activity状态区别 onCreate系统首次创建 Activity 触发。Activity会在创建后进入创建状态。...谈一返回栈 首先理解android是使用Task来管理活动,一个Task就是一组存放在栈里活动集合,这个栈就叫做返回栈,每启动一个新活动,就会将其放入栈顶,当我们点击back回退或调用activity...需要注意是, onCreate 取出数据一定要先判断savedInstanceState 是否。...对象非,不需要加非判断,而 onCreate 需要非判断。...onSaveInstanceState()时机: (1)用户按Home键 (2)横竖屏切换 (3)按电源按钮(关闭屏幕显示) (4)内存不足导致优先级Activity被杀死 onRestoreIntanceState

    1.1K00

    Android-活动生命周期(二)

    两个子活动分别加入一个TextView, 然后AndroidManifest.xml内配置DialogActivity主题。...观察活动生命周期 启动 依次执行onCreate(),onStart(),onResume()。...按Back返回MainActivity 由于之前MainActivity进入停止状态,所以onRestart()执行,又会依次执行onStart()和onResume(),onCreate()不会执行...点击第二个按钮,启动DialogActivity onPause()执行,onStop没有执行,因为DialogActivity没有完全遮挡MainActivity,只是进入暂停状态, 相应按Back...活动被回收怎么办 当一个活动进入停止状态,有可能被系统回收,那么当有一个活动A,A基础上启动了活动B,A进入停止状态,这时由于系统内存不足,A被回收掉,这时按Back键还是会正常显示A,但是不会执行

    37120

    札记:Fragment基础

    app会在不同屏幕尺寸动态选择同一个Activity同时显示文章列表和对应选择文章详情信息,或者单独一个列表界面,选择一个文章后打开新Activity来显示文章详情。...hierarchy创建完成,还未被添加到Activity布局ViewGroup。...比如点击一个按钮Activity添加Fragment,此时fragment实例直接依次执行onAttach、onCreate...onResume等一系列方法,而Activity则一直处于resumed...通过FragmentTransaction来执行有关fragment事务,可以通过addToBackStack()来添加此次事务操作到回退栈,这样以后,用户按返回键后ActivityFragment...ArticleListActivity 对应宿主ArticleListActivity,它在大尺寸屏幕可以同时显示列表和文章详情,小尺寸屏幕显示标题列表。

    1.3K60

    揭开RecyclerView庐山真面目

    谷歌Android L中新增了RecyclerView,是一种新视图组,目标是任何基于适配器视图提供相似的渲染方式。...开发RecyclerView充分考虑了扩展性,因此用它可以创建想到任何种类布局。但在使用上也稍微有些不便,比如使用步骤更加复杂,特别是一些控制点击、长压事件需要自己完成。...弹出窗口中输入recyclerview,然后点击右侧搜索按钮,即可检索到最新recyclerview依赖库,最后点击OK按钮即可添加。 ?...app/main/res/layout/目录下创建recyclerview_layout.xml文件,在其中填充如下代码片段: <?...实现ListView效果,使用自定义RecyclerViewAdapter决定RecyclerView所要显示内容,并设置显示界面样式。

    1.8K80

    Flutter 全栈式——基础控件

    alignment Alignment 设置图片对齐位置 repeat ImageRepeat 设置图片重复填充方式 centerSlice Rect 类似与Android点9处理,图片上定义某个矩形区域用于拉伸...,则使用fillColor指定颜色填充 fillColor Color 输入框背景颜色 errorBorder InputBorder errorText不为,且输入框没有焦点显示边框 focusedBorder...InputBorder 输入框有焦点边框,errorText必须 focusedErrorBorder InputBorder errorText不为,输入框有焦点边框 disabledBorder...InputBorder 输入框禁用时显示边框,errorText必须 enabledBorder InputBorder 输入框可用时显示边框,errorText必须 border InputBorder...hoverColor Color 当指针悬停在按钮填充颜色 highlightColor Color 水波纹高亮颜色 elevation double 阴影高度 hoverElevation

    3.8K40

    实战 | 认识 RecyclerView

    实现过程,我也会将 RecyclerView 每个部分揉碎了展现给大家,这样大家就可以自己应用实现了。 RecyclerView 是 "何方神圣"?为什么选择它呢?...当视图滑出屏幕RecyclerView 会复用它并且填充数据。由于它是通过回收已有的结构而不是持续创建新列表项,所以它可以有效提高应用时间效率和空间效率。...随着用户滑动屏幕,ViewHolder会被回收 (使用新数据进行填充),已有的表项会在一端消失,并且另一端显示一个新表项。...重写 onCreateViewHolder() 当 ViewHolder 创建时候会调用该方法。该方法里进行初始化和填充 RecyclerView 表项视图。...上面的例子大家展示了如何实现 RecyclerView 几个组成部分来显示简单文本元素。当然 RecyclerView 可以包含更多有趣和复杂元素,我们将在未来文章和示例大家展示。

    1.3K30
    领券