我正在尝试编写一种方法来获取 firebase 数据库中当前保存的所有学生。但我无法将这些数据存储在全局变量 students
上。怎么做?我不知道如何用 OOP 的理论来解决这个范围问题。有什么好主意吗?
private static ArrayList<StudentModel> students = new ArrayList<StudentModel>();
private Firebase mStudentsRef;
public ArrayList<StudentModel> getAll() {
mStudentsRef = new Firebase("https://firstapp.firebaseIO.com/students");
mStudentsRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
StudentModel student;
HashMap<String, String> studentDetails;
for (DataSnapshot ds : dataSnapshot.getChildren()) {
studentDetails = new HashMap<String, String>();
student = new StudentModel();
for (DataSnapshot sds : ds.getChildren())
studentDetails.put(sds.getKey(), sds.getValue().toString());
student.set_id(ds.getKey());
student.setFirstname(studentDetails.get(dbHandler.STUDENT_FIRSTNAME));
student.setLastname(studentDetails.get(dbHandler.STUDENT_LASTNAME));
student.setUsername(studentDetails.get(dbHandler.STUDENT_USERNAME));
student.setPassword(studentDetails.get(dbHandler.STUDENT_PASSWORD));
students.add(student);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
Log.e("Student.getAll(): ", firebaseError.getMessage());
}
});
return students;
}
提前致谢!
最佳答案
您可以创建一个私有(private)方法,该方法采用 ArrayList<StudentModel>
作为参数,然后您可以将学生全局变量设置为通过参数传入的数据。我希望这应该有效并且是一个干净的解决方案。
您需要另一个本地 ArrayList<StudentModel>
在 addValueEventListener
中键入变量。我希望它是清楚的。
如果您需要示例,请告诉我
关于java - 如何在全局变量的回调中存储数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36704782/