Я знаю, как использовать FirebaseRecyclerAdapter
по списку предметов в Firebase. Я также знаю, как получить данные Firebase из нескольких мест с использованием индексов. Но я не знаю, как объединить это с FirebaseRecyclerAdapter.Как использовать FirebaseRecyclerAdapter с динамической ссылкой в Android?
У меня есть простая структура данных, где пользователи могут быть друзьями:
"users": {
"user1": {
"name": "name",
"friends": {
"user2": "true"
}
}
"user2": {
"name": "name",
"friends": {
"user1": "true"
}
}
}
я использую уникальные идентификаторы для имен пользователей. В этом простом примере пользователь 1 и пользователь 2 являются друзьями. То, что я хочу сделать, - это получить список всех имен (и позже, возможно, больше), используя FirebaseRecyclerAdapter. Обычно я получаю список, получая идентификатор пользователя под «друзьями», а затем используя эти идентификаторы для перехода к их именам. В Java это будет выглядеть следующим образом:
Firebase ref = new Firebase("<reference>");
ref.child("users/user1/friends").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
String userId = snapshot.getKey();
ref.child("users/" + userId + "/name").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
System.out.println(snapshot.getValue());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
// Do something here
}
});
}
});
Но при использовании FirebaseRecyclerAdapter, вы получите только определить один URL. Адаптер создаст список, основанный на элементах в этом единственном месте.
Есть ли способ настроить адаптер так, чтобы он считывал данные из нескольких мест, так же, как в примере выше? Или есть способ сделать динамическую переменную ref, которая указывает только на идентификаторы пользователя, которые также хранятся в списке «друзей» текущего пользователя? Я думал об использовании метода equals(), но я не могу понять, как именно.
Другой способ хранения имен пользователей также в списке «друзей». Но это не улучшит структуру данных. Мне приходилось менять имена в двух местах каждый раз (и, может быть, позже позже), и это приведет к большей избыточности.
У кого-нибудь есть решение этой проблемы? Я не мог найти ответ нигде, но это похоже на общую картину. И, кроме того, что он работает, как мне это сделать эффективно?
Перед тем, как использовать метод, описанный в этом ответе, пожалуйста, помогите с ним: http://stackoverflow.com/q/41921120/6144372 –
Я выяснил проблему, которая вызывала сбой, как указано в моем предыдущем вопросе ... Я поставил еще один вопрос, основанный на этой проблеме. Пожалуйста, обратите внимание: http://stackoverflow.com/q/41925181/6144372 Спасибо! –