2015-03-01 3 views
2

Я разрабатываю приложение для Android с Firebase в качестве бэкэнд. До сих пор это работало очень плавно, и мне это нравилось, но теперь я столкнулся с крупным препятствием. Приложение должно искать сделки в определенном месте, а затем заполнить ListView (или RecyclerView) соответственно. Я уже включил Geofire в мою структуру Firebase, имея основные узел и geofire узел с теми же ключами, и Geoquery возвращает их в порядке.Geoquery для заполнения ListView/RecyclerView

Моя проблема заключается в том, что FirebaseListAdapter, который я захватил из примеров Firebase, не имеет ни одного метода добавления элементов, что это то, что мне нужно, так как Geoquery вернет только один ключ в момент времени. После длительного поиска я не смог найти пример кода, который имел дело с одной и той же проблемой, поэтому я хотел бы попросить совета относительно того, каким образом и который является наиболее эффективным способом реализации этого ,

Благодаря

P.S .: моей firebase структуры:

{ 
    "deals" : { 
    "-JikH6yjJ9TblE8_4fX4" : { 
     "category" : "Food", 
     "description" : "example description", 
     "location" : "George St, Brisbane", 
     "title" : "some title", 
    } 
    }, 
    "geofire" : { 
    "-JikH6yjJ9TblE8_4fX4" : { 
     ".priority" : "r7hgf2d639", 
     "g" : "r7hgf2d639", 
     "l" : [ -27.46268003, 153.03172851 ] 
    } 
    } 
} 
+0

Возможный дубликат [Как заполнить Android ListView информацией из запроса Firebase] (http://stackoverflow.com/questions/27414344/how-to-populate-android-listview-with-information-from-firebase-query) – Kato

ответ

2

FirebaseListAdapter будет работать только для простого случая, когда вы хотите добавить всех детей из Firebase места в список. Он предназначен как простой вспомогательный класс. С более сложными примерами, подобными этому, вам нужно будет написать свой собственный ListAdapter.

После получения введенного ключа для вашего GeoQuery вы можете добавить слушателя значений для действительных значений в узле deals. Затем вы можете использовать эти события значения для заполнения и обновления списка.

Обязательно удалите прослушиватели значений в событии выхода ключа или при удалении списка.

+0

Я решил на мгновение, извлекая ключевой элемент .json и разобрав его в списке, поскольку объект на нем работает, даже если он довольно медленный. –

+0

Я действительно пытался использовать 'addListenerForSingleValueEvent', и это намного быстрее и эффективнее. Спасибо @jonnydee –

+0

Можно ли поделиться, как вы это сделали @EmanueleTonello? – ymerdrengene

Смежные вопросы