因此,我进行了设置,希望从 Firebase 上的数据库获取数据,我可以正常获取 URL,但无法从中获取数据。当我尝试调试时,它会读取 query.addValueEventListener
但之后它会直接进入我的列表适配器。我不知道它没有获取数据。我的节点服务器上有一个类似的设置,运行得很好,但由于某种原因无法在 Android 上运行
final DatabaseReference database = FirebaseDatabase.getInstance().getReference();
Query query = database.child("exercises");
Log.i("Database query", database.child("exercises").toString());
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot exerciseSnapshot: dataSnapshot.getChildren())
{
List<ExerciseList> exercises = new ArrayList<ExerciseList>();
ExerciseList exerciseList = exerciseSnapshot.getValue(ExerciseList.class);
Log.i("description/name", exerciseList.getDescription() + " " + exerciseList.getName());
exercises.add(exerciseList);
adapter = new ExerciseLoadListAdapter(mActivity, exercises);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
mListView.setAdapter(adapter);
最佳答案
它直接转到适配器
,因为addValueEventListener()
是异步监听器
,它在后台运行!
试试这个代码,它可能会对你有帮助!
final DatabaseReference database = FirebaseDatabase.getInstance().getReference();
//Query query = database.child("exercises");
//Log.i("Database query", database.child("exercises").toString());
database.child("exercises").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot exerciseSnapshot: dataSnapshot.getChildren())
{
List<ExerciseList> exercises = new ArrayList<ExerciseList>();
ExerciseList exerciseList = exerciseSnapshot.getValue(ExerciseList.class);
Log.i("description/name", exerciseList.getDescription() + " " + exerciseList.getName());
exercises.add(exerciseList);
}
adapter = new ExerciseLoadListAdapter(mActivity, exercises);
mListView.setAdapter(adapter)
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
关于java - 无法从 Android 上的 Firebase 数据库获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49841933/