我是Firebase和NoSQL的新手。我有一個Android演示,其中有一個城市自動填充文本字段,我想在輸入時填充Firebase數據庫中的城市。從Android中的Firebase實時數據庫檢索數據
{ "cities":{
"Guayaquil":true,
"Gualaceo":true,
"Quito":true,
"Quevedo":true,
"Cuenca":true,
"Loja":true,
"Ibarra":true,
"Manta":true
}
}
這是我到目前爲止。
如何從數據庫中以字母(鍵盤輸入)開頭的城市檢索?如果我開始輸入「G」,我想收到「瓜亞基爾」和「Gualaceo」。
如果我使用orderByValue
總是返回一個空的快照。
如果我用orderByKey
返回整個列表。
Query citiesQuery = databaseRef.child("cities").startAt(input).orderByValue();
citiesQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> cities = new ArrayList<String>();
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
cities.add(postSnapshot.getValue().toString());
}
注:如果你能推薦一個更好的數據結構,歡迎您。
多大將城市這個數據庫是什麼?您的應用程序是否可以將數據庫中的數據讀入本地副本(如某種數組),然後使用本地邏輯在打字時僅顯示適當的值? – Ryan
最初它將在10左右,但可以增加到100.我希望這個功能是「在線」的,所以我可以添加新的城市,而不需要在本地存儲 –
哦,這很好。就處理器和網絡而言,100個小字符串實際上什麼都不是,所以它肯定會很快。讓我通過本地存儲來澄清我的意思。我的意思是在運行時在內存中,這就是全部。我不是說要在設備存儲器或類似的東西中存儲一個副本。我的意思是,將城市讀入數組,然後使用該數組顯示數據。當數據庫發生變化時,您可以非常輕鬆地立即更新陣列,但我懷疑它會經常更改。查看我的答案,以獲得更多關於我在想什麼的解釋。 – Ryan