我有一个Arduino,它将读数推送到数据库,我有一个Android应用程序,可以检索读数并在TextView中显示它.

enter image description here

我的应用程序一直在获取TextView的所有内容,键和值.

我如何才能解决这个问题并且只显示最后一个值?

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    // Initialize Firebase App
    FirebaseApp.initializeApp(this)

    // Inflate layout
    Binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(R.layout.activity_landing)

    // Initialize Firebase Database query
    val query = FirebaseDatabase.getInstance("https://voltageread-22aa9-default-rtdb.firebaseio.com/")
        .reference
        .orderByKey()
        .limitToLast(1)

    // Fetch data from Firebase Realtime Database and save it in a variable
    query.addListenerForSingleValueEvent(object : ValueEventListener {
        override fun onDataChange(snapshot: DataSnapshot) {
            if (snapshot.exists() && snapshot.value != null) {
                val lastChildSnapshot = snapshot.children.lastOrNull()
                if (lastChildSnapshot != null) {
                    val data = lastChildSnapshot.value.toString()
                    if (!data.isNullOrEmpty()) {
                        Log.d("Firebase", "Data received: $data ")
                        // Update the UI with the received data
                        Binding.voltage.text = data.substringAfter('=')
                    }
                }
            }
        }

        override fun onCancelled(error: DatabaseError) {
            Log.e("Firebase", "Data fetching cancelled: ${error.message}  ")
        }
    })

我试过使用内置的电池板,但似乎什么都不起作用

推荐答案

在Firebase中使用查询操作(如orderByKeylimitToLast)时,它们对您引用的数据库中路径的直接子 node 进行操作.因为您在数据库的根上操作,所以对该根目录下的键进行排序和筛选,只剩下一个子键:all.

相反,您要做的是对all路径本身进行操作,以便Firebase对下面的-N...个子 node 进行排序和过滤.在代码中,这将是:

val query = FirebaseDatabase.getInstance("https://voltageread-22aa9-default-rtdb.firebaseio.com/")
    .reference
    .child("all") // ?
    .orderByKey()
    .limitToLast(1)

Android相关问答推荐

当我的Log.i()不在主线程中时,如何在我的logcat中显示它?

房间打开创建回调java.nio.channels. OverlappingFilLockResponse

懒惰的垂直网格中盒子的重量-Jetpack组合

从单元测试访问RES/RAW文件

在Android Studio中,如何在BuildSrc Dependenices Kotlin文件中指定时标记与旧版本的依赖关系

如何在喷气背包中绕过集装箱

Android 14预测性背部手势-闪烁的白色背景色

(已解决)从最近的应用程序打开应用程序时出错

在 kotlin 协同 routine 中,如何将数据范围限定为请求路径(以 MDC 为例)?

闪屏 API 无法在 Android 12 上运行(API 31、32)

Android WebView 不会在滚动端加载新内容

通知使用默认语言,屏幕显示多种语言,同时通过 AppCompatDelegate 设置应用程序语言

在段的中心绘制饼图(甜甜圈图)的图例

React-native 3D对象渲染

Compose Accompaniist Pager 中的 TabRow/Tab 重组问题

try 使用 ViewPager2 实现滑动视图时出现类型不匹配错误

自定义 Recyclerview [Android & Kotlin]

在开发过程中我应该把 mp4 文件放在哪里?

如何在 Jetpack Compose 中禁用 TabRow 或 Tab 中的涟漪效应?

Delphi 11:以编程方式查找 MSBuild 的正确工具版本