在没有OnClickListener的情况下在Android应用程序中检索Firebase数据

j

我正在尝试在Firebase数据库中的表中获取特定列的总和,以在Android应用程序中生成值的平均值(与当前读数形成对比)。作为测试,我想在测试应用程序的TextView中显示该总和。当我第一次声明addValueEventListener时:

 reff.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {


            for (DataSnapshot snapshot2:  snapshot.getChildren()){
                sum = sum + snapshot2.child("age").getValue(Integer.class);
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {

        }
    });

然后调用数据库setValue()并在onClickListener中设置textView,这可以按预期工作。

 button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            reff.child(String.valueOf(maxid+1)).setValue(member);
            Toast.makeText(MainActivity.this, "data inserted successfully", Toast.LENGTH_LONG).show();
            a.setText(String.valueOf(sum));

        }
    });

最终,在我的应用程序中,我不希望通过单击按钮触发“总和”值。我希望它可以显示出来,以便可以将新数据与数据库中的滚动平均值进行比较。如果将上面的代码从OnClickListener移到我的主要onCreate方法中,sum的值保持为0。读取各种线程时,我还用addValueEventListener()替换了addListenerForSingleValueEvent(),但这没有影响。

有人能提出一种我可以重新设置格式的方法而不必依靠按下按钮来获取表中总和的方法吗?

弗兰克·范普菲伦

对的调用a.setText()必须在内部onDataChange,因为当更新的数据来自数据库时,这是保证执行的唯一代码。

所以:

reff.addValueEventListener(new ValueEventListener() {

    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
        for (DataSnapshot snapshot2:  snapshot.getChildren()){
            sum = sum + snapshot2.child("age").getValue(Integer.class);
        }
        a.setText(String.valueOf(sum));
    }

    @Override
    public void onCancelled(@NonNull DatabaseError error) {
        throw error.toException();
    }
});

另外:请永远留下onCancelled空荡荡的,你忽略潜在的错误那样,。

另请参见:getContactsFromFirebase()方法返回一个空列表,我将作为一个重复说明关闭您的问题-我也想向您展示代码中的相关解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在没有存储库访问的情况下在Groovy应用程序中包含依赖项

我可以在没有应用程序的情况下在Chrome中访问USB HID吗?

如何在没有服务器的情况下在多个设备中的同一应用程序之间共享数据库

在没有 Android Studio 的情况下在 Google Play 控制台上部署移动应用程序

Android:在没有计时器的情况下在应用程序上创建启动画面?

如何在没有过多负载的情况下在我的应用程序中显示日期?

在没有Rollbar Heroku附加组件的情况下在Heroku应用程序中添加Rollbar

如何在没有窗体或控件的情况下在 Winform 应用程序中调用 UI 线程?

如何在没有Storyboard的情况下在Xcode中创建一个空应用程序

如何在Mac上没有Moby鲸鱼应用程序的情况下在终端中激活Docker 1.12

Azure DevOps:如何在没有devops主菜单的情况下在自己的应用程序中显示Wiki页面?

是否可以在没有 Firestore 或 FCM 的情况下在我的 Flutter 聊天应用程序中通知用户新消息?

在没有 GCM/Firebase 的情况下关闭应用程序时运行 Android 通知

在没有 Github 的情况下在 Microsoft Azure 上部署 node js 应用程序

在没有Apple Developer帐户的情况下在iPhone上测试本机应用程序

在没有本机应用程序的情况下将图像分享到Android中的Twitter

如何在没有root的情况下在Android应用上访问数据库

如何在不访问源代码的情况下从现有 Java 应用程序中检索实时数据?

有没有办法在不选择它的情况下在visual studio的控制台应用程序中执行命令?

Android是否可以在没有任何库的情况下在应用中读取/打开pdf文件?

如果在没有Web应用程序支持的情况下在Nginx中启用HTTP / 2,会发生什么?

如何在没有 gcc 编译器的情况下在 docker 中打包和发布一个简单的 c 应用程序?

SQL Server 在没有计划应用程序的情况下在 30 天后重置一个整数

您可以在没有Mac管理员的情况下在iOS上创建和发布应用程序吗?

在没有窗口管理器的情况下在X应用程序之间切换

xcode 6在没有开发人员帐户的情况下在IOS设备上运行我的应用程序?

如何使用API9中的新主题在没有ActionBar的情况下创建Android应用程序?

如何在没有登录内容的情况下将 DocuSign 集成到 Android 应用程序中

播放框架-在没有启动应用程序的情况下测试数据访问层