java - 如何使用 firebase 监听 android studio 中的变化

标签 java android firebase listener

我很难阅读 Firebase 上的更改。我想做的是,当触发开始按钮时,每次更改都会显示一个对话框,显示“这已被执行”。

我尝试使用 addListenerForSingleValueEvent 但似乎该对话框仅在所有子项都已更改时才显示。

 startBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            currentWeek = programTrackers.get(0).getWeek();
            DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("ProgramTracker")
                    .child(GlobalUser.getmUser().getiD())
                    .child(programTrackers.get(0).getProgramId());
            databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    final int childCount = (int) dataSnapshot.getChildrenCount();
                    int count = 0;
                    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        ProgramTracker programTracker = snapshot.getValue(ProgramTracker.class);
                        if (programTracker.getProgramExerciseWeek() == currentWeek) {
                            programTrackChecker.add(programTracker);


                        }
                        count++;
                    }
                    if (count == childCount) {
                        boolean isFinished = false;
                        //last iteration
                        for (int i = 0; i < programTrackChecker.size(); i++) {
                            if (programTrackChecker.get(i).isProgramExerciseFinished()) {
                                isFinished = true;
                            } else
                                isFinished = false;
                        }
                        if (isFinished) {
                            AlertDialog.Builder builder = new AlertDialog.Builder(DayExerciseActivity.this);
                            builder.setMessage("You have already completed all exercises. Are you sure you want to do it again?");
                            builder.setPositiveButton("Yes", (dialogInterface, i) -> {
                                startActivity(new Intent(DayExerciseActivity.this, DoProgramActivity.class)
                                        .putExtra("programTrackers", programTrackers)
                                        .putExtra("exerciseNum", String.valueOf(0)));

                            });
                            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    dialogInterface.dismiss();
                                }
                            });
                            builder.show();


                        } else
                            startActivity(new Intent(DayExerciseActivity.this, DoProgramActivity.class)
                                    .putExtra("programTrackers", programTrackers)
                                    .putExtra("exerciseNum", String.valueOf(0)));

                    }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

最佳答案

您需要更改此设置:

databaseReference.addListenerForSingleValueEvent(new ValueEventListener

进入此:

databaseReference.addValueEventListener(new ValueEventListener

来自文档:

public abstract void onDataChange (DataSnapshot snapshot)

This method will be called with a snapshot of the data at this location. It will also be called each time that data changes

关于java - 如何使用 firebase 监听 android studio 中的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56659170/

相关文章:

java - Android部署的App无法实例化应用程序

java - 在两个字段上创建 Hibernate 标准以及类似查询

java - 访问其他类中的对象

AngularJS在连接或断开连接到firebase时更新服务值

java - 选择不带图标的searchview android

java - 单例 - 实例化类的最佳方式

reactjs - Firebase 存储 "Permission denied"错误

firebase - FutureBuilder 的嵌套 future

android - Google Play 商店热修复以前的版本,分阶段推出

android - 选择其他单选按钮时,单选按钮组中的单选按钮不会取消选择