从 Firebase 搜索 EditText 值

Posted

技术标签:

【中文标题】从 Firebase 搜索 EditText 值【英文标题】:Searching for EditText value from Firebase 【发布时间】:2019-09-25 16:02:12 【问题描述】:

我之前发布了一个关于如何在 firebase 中搜索 edittext 的值的问题,并意识到我的数据库设置是错误的。现在我的数据格式如下:


  "Aaron A" : 
    "allDj" : 
      "-Le5EpHND7KF--XOT7Lc" : "hahahaha",
      "-Le5EsTfNaQ9h3BVeZRw" : "hahahaha",
      "-Le5Fgurpir7bIN3agRb" : "yousucks",
      "-Le5IsCThArSKGRTPnN5" : "ffffggg"
    
  ,
  "allDeeJays" : 
    "-Le5FguoZsnT2lejgAkZ" : "yousucks",
    "-Le5IsCPK69NTbgbgUUo" : "ffffggg",
    "-Le5J5CmPkddSaK_MgpG" : "ahhhaahhaahha"
  

我希望能够搜索“allDeeJays”,这是我目前所拥有的:

query = mProfileDatabase.orderByChild("allDeeJays")
                      .startAt(t.getText().toString()).endAt(t.getText().toString() + "\uf8ff");

我无法理解为什么这不起作用,任何帮助加上解释将不胜感激。

编辑

替换我所拥有的之后:

        query = mProfileDatabase.child("allDeeJays")
                .orderByValue()
                .startAt(t.getText().toString()).endAt(t.getText().toString() + "\uf8ff");

我收到一个新错误,logcat 没有指定它在哪一行:

 com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.android.heydj.DjProfile

【问题讨论】:

【参考方案1】:

您的 JSON 中的 allDeeJays 节点没有字符串值,因此您的条件(如 .startAt(t.getText().toString()))不会返回任何内容。

您可能正在寻找:

query = mProfileDatabase.child("allDeeJays")
                  .orderByValue()
                  .startAt(t.getText().toString()).endAt(t.getText().toString() + "\uf8ff");

【讨论】:

现在我收到一个新错误:(问题已相应更新) 这是一个新错误,表明使用更新后的代码可以获得结果。您需要将每个子快照的值作为String 获取,您似乎在做其他事情。我不能说你到目前为止分享的内容是什么,所以我建议用重现这个新错误所需的最少代码+数据打开一个新问题。

以上是关于从 Firebase 搜索 EditText 值的主要内容,如果未能解决你的问题,请参考以下文章

从列表视图中搜索edittext中的项目显示错误的结果

使用 EditText 在 ListView 中搜索

Firebase 按子值搜索

如何从具有多个视图的 ListView 中的 EditText 获取文本?

无法从 Listview 的 EditText 中获取值?

如何从 EditText Android 获取值