从 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 值的主要内容,如果未能解决你的问题,请参考以下文章