У меня есть Attack
объект.
Attack.java
public class Attack implements Parcelable {
private String pushId, website;
private int networkType;
private long timeMillis;
private Map<String, String> hostInfo = new HashMap<>();
private List<String> botIds = new ArrayList<>();
public Attack() {
}
public Map<String, String> getHostInfo() {
return hostInfo;
}
// getters/setters
}
Проблема
Я храню Attack
в базе данных Firebase, но когда япытаюсь получить их, attack.getHostInfo()
имеет одно значение вместо 4, как показано на скриншоте ниже.
Вот снимок экрана этого экземпляра с консоли:
Как подключен слушатель
Я не присоединяю ChildEventListener
к действию напрямую, а через модуль под названием AttackRepository
.Деятельность может использовать этот класс для загрузки / обновления / удаления Attack
или для прослушивания, когда Attack
было загружено / обновлено / удалено .
Реализация AttackRepository
с использованием Firebase
Это FirebaseRepository
класс .Вот где подключен слушатель:
public void startListenForChanges() {
allAttacksRef.addChildEventListener(this);
}
Таким образом, заинтересованная сторона, Fragment
в моем случае, вызывает вышеуказанный метод и получает информацию через AttackRepository
при загрузке Attack
и т. Д.
И, наконец, вот как заинтересованные стороны получают данные.
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, String s) {
Attack attack = dataSnapshot.getValue(Attack.class);
repositoryListener.onAttackUpload(attack);
}
Мой фрагмент должен использовать значения Attack.hostInfo
, но остальные три отсутствуют!