首页
学习
活动
专区
工具
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标签,当选中状态为“真”时,设置为文本选中颜色(设置为粉色),当选中状态为“假”时,设置为正常状态颜色

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

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

    3.7K31

    Android入门教程 | Fragment 基础概念

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

    3.5K40

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

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

    2.2K30

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

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

    1.9K20

    安卓-碎片的使用入门

    想象我们正在开发一个新闻应用,其中一个界面使用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,这里是生成随机数来设置高度的。

    69630

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

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

    2K20

    移动开发作业二

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

    16821

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

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

    1.2K20

    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这时返回栈已经空了,于是就显示另一个返回栈里面的内容

    68820

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

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

    3K20

    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,但是不会执行

    37720

    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()来添加此次事务的操作到回退栈中,这样以后,用户按下返回键后Activity的Fragment...ArticleListActivity 对应宿主ArticleListActivity,它在大尺寸屏幕下可以同时显示列表和文章详情,在小尺寸屏幕下只显示标题列表。

    1.3K60

    揭开RecyclerView庐山真面目

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

    1.8K80

    实战 | 认识 RecyclerView

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

    1.3K30
    领券