【问题标题】:firebase read data kotlinfirebase 读取数据 kotlin
【发布时间】:2020-07-11 22:06:31
【问题描述】:

我是 kotlin 的新手。而且只有我教他。如果你能帮助我。 我再次对firebase有疑问。 我有这样的结构:

{
  "BarcodeBase" : {
    "Pepsi" : {
      "Pepsi Black" : {
        "barcode" : "4820036487899",
        "namebar" : "Pepsi Black"
      },
      "Pepsi Chery" : {
        "barcode" : "4820036487789",
        "namebar" : "Pepsi Chery"
      }
    }
  },
  "users" : {
    "4WZ8sYdLfNeNTDH7t0JZXKbNdmF2" : {
      "company" : "Pepsi",
      "email" : "test@gmail.com",
      "id" : "4WZ8sYdLfNeNTDH7t0JZXKbNdmF2"
    }
  }
}

我需要输出名称栏和条形码。 我这样写数据库:

private fun addbarcode() {
    val name = etname.text.toString()
    val barcode = etNumber.text.toString()
    if (TextUtils.isEmpty(name)) { Toast.makeText(applicationContext, "Please enter name...", Toast.LENGTH_LONG).show()
        return }
    if (TextUtils.isEmpty(barcode)) { Toast.makeText(applicationContext, "Please enter barcode!", Toast.LENGTH_LONG).show()
        return }
    val dataMap = mutableMapOf<String, Any>()
    dataMap[CHILD_NAMEBARCODE] = name
    dataMap[CHILD_BARCODE] = barcode
    REF_DATABASE_ROOT.child(NODE_BARCODE).child(USER.company).child(name)
        .updateChildren(dataMap).addOnCompleteListener { task2 ->
            if (task2.isSuccessful) Toast.makeText(Iconics.applicationContext, "Successful!", Toast.LENGTH_LONG).show()
        }
    return }

在 (USER.company) 之后我需要在其他活动中使用哪个孩子?

对不起我的英语不好(

--------更新

inline fun initBarcode(crossinline function: () -> Unit) {
    REF_DATABASE_ROOT.child(NODE_BARCODE).child(USER.company).child(I do not know what can be used here)
        .addListenerForSingleValueEvent(AppValueEventListener {
            BARCODE = it.getValue(BarcodeDBModel::class.java) ?: BarcodeDBModel()
            if (BARCODE.namebar.isEmpty()){ BARCODE.namebar = "Ошибка" }
            function()
        })
}

这是我的输出代码。但它不能按我的需要工作。我需要对其进行更改以使其正常工作。但我不知道怎么做。

【问题讨论】:

  • 您的代码还没有从数据库中读取。如果您还没有这样做,是的,我建议您阅读 reading datacodelab 上的 Firebase 文档。
  • 请检查更新。

标签: firebase kotlin firebase-realtime-database


【解决方案1】:

如果您知道要读取的孩子的密钥(如Pepsi BlackPepsi Cherry),您可以将其传递给孩子方法:

REF_DATABASE_ROOT.child(NODE_BARCODE).child(USER.company).child("Pepsi Black")
    .addListenerForSingleValueEvent(AppValueEventListener {
        BARCODE = it.getValue(BarcodeDBModel::class.java) ?: BarcodeDBModel()
        if (BARCODE.namebar.isEmpty()){ BARCODE.namebar = "Ошибка" }
        function()
    })

如果您不知道密钥,您可以读取所有子节点,然后循环遍历它们:

REF_DATABASE_ROOT.child(NODE_BARCODE).child(USER.company)
    .addListenerForSingleValueEvent(AppValueEventListener {
        for (snapshot in it.children) {
            BARCODE = snapshot.getValue(BarcodeDBModel::class.java) ?: BarcodeDBModel()
            if (BARCODE.namebar.isEmpty()){ BARCODE.namebar = "Ошибка" }
        }
        function()
    })

【讨论】:

  • 嗨。我使用了 RecycleView。
猜你喜欢
  • 1970-01-01
  • 2020-07-08
  • 2021-11-07
  • 2018-05-17
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
相关资源
最近更新 更多