У меня есть класс DataBase с методом «query», который в основном помещает весь дочерний элемент узла «riferimento» в массив
public ArrayList<ContenutoDAO> query(String riferimento)
{
ArrayList<ContenutoDAO> res=new ArrayList<>();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(riferimento);
ref.addListenerForSingleValueEvent(new ValueEventListener()
{
private ContenutoDAO temp=null;
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds:dataSnapshot.getChildren())
{
temp=new ContenutoDAO();
temp.setTipo(ds.child("tipo").getValue(String.class));
temp.setTitolo(ds.child("titolo").getValue(String.class));
temp.setValore(ds.child("valore").getValue(String.class));
res.add(temp);
System.out.println("prova-prova");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return res;
}
Когда слушатель подключен, цикл for вообще не выполняется, пока я не вызову temp.setTipo (...), temp.setTitolo (...) и temp.setValore (...). не позволяйте циклу for выполняться. Если я удаляю эти методы, цикл for работает
это класс ContenutoDAO:
public class ContenutoDAO {
private SimpleStringProperty tipo;
private SimpleStringProperty titolo;
private SimpleStringProperty valore;
public void setTipo(String tipo) {
this.tipo.set(tipo);
}
public void setTitolo(String titolo) {
this.titolo.set(titolo);
}
public void setValore(String valore) {
this.valore.set(valore);
}
public String getTipo() {
return tipo.get();
}
public String getTitolo() {
return titolo.get();
}
public String getValore() {
return valore.get();
}
public StringProperty tipoProperty() {
return tipo;
}
public StringProperty titoloProperty() {
return titolo;
}
public StringProperty valoreProperty() {
return valore;
}}
Я пробовал много решений, таких как:
1.использование строки вместо свойства simplestring в классе ContenutiDAO
заполняет массив списков данных и преобразует его в массив списков ContenutoDAO другим методом
3.введите код метода запроса в конструктор базы данных классов (конструктор initialize firebaseapp)
4.создание 3 списка строк (по одному на каждого потомка узла: типо, титоло и значение), затем заполнение его значениями и последующее заполнение массива ContenutiDAO, используя эти данные
это структура базы данных
-root
--- музей музыки
----- Чак Берри
------- contenuto0
------------ valore: значение
------------ Типо: значение
------------ titolo: значение
------- contenuto1
------------ valore: значение
------------ Типо: значение
------------ titolo: значение
Мне нужно вернуть всех детей из музыкального музея / Чака Берри.
Извините, мой плохой английский, я знаю, что это странная ошибка, спасибо за внимание.