Я новичок в Firebase и NoSQL. У меня есть Android Demo с текстовым полем Autocomplete City, в котором я хочу заполнить города, которые у меня есть, из моей базы данных Firebase при наборе текста.Извлечение данных из базы данных Firebase Realtime в Android
{ "cities":{
"Guayaquil":true,
"Gualaceo":true,
"Quito":true,
"Quevedo":true,
"Cuenca":true,
"Loja":true,
"Ibarra":true,
"Manta":true
}
}
Это то, что у меня есть до сих пор.
Как я могу получить из городов БД, которые начинаются с буквы (ввод с клавиатуры)? Если я начну печатать «G», я хочу получить «Guayaquil» и «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