java - 如何在全局变量的回调中存储数据?

标签 java android firebase crud

我正在尝试编写一种方法来获取 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/

相关文章:

java - 每次保存后 Eclipse 在构建项目中挂起

java - 我应该尽可能使用并行流吗?

android - 如果数组为空,如何找到最大的数字和 null

android - 如何在单个 TextView 中显示数组列表中的多行?

android - 与 Firebase 混淆变量范围

java - 如何在android studio中到达行尾

java - 我应该使用 Java 枚举来获取特定年份的用户吗?

android - 如何使用 renderscript 实时模糊位图?

android - 在 RecyclerView 适配器 notifyDataSetChanged() 之后未调用 onBindViewHolder

javascript - 属性 ID 之后缺少冒号,Firebase