首页
学习
活动
专区
工具
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方法中的数据绑定逻辑是否正确。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

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

18610

Android RecyclerView使用简述

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

2.4K21
  • 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

    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

    移动开发作业二

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

    16221

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

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

    2.9K20

    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

    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

    札记:Fragment基础

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

    1.3K60

    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庐山真面目

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

    1.8K80
    领券