【问题标题】:How to listen for changes in android studio using firebase如何使用firebase监听android studio中的变化
【发布时间】:2019-11-01 16:36:15
【问题描述】:

我很难阅读我的 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) {

                }
            });

【问题讨论】:

    标签: java android firebase listener


    【解决方案1】:

    你需要改变这个:

    databaseReference.addListenerForSingleValueEvent(new ValueEventListener
    

    进入这个:

    databaseReference.addValueEventListener(new ValueEventListener
    

    来自文档:

    public abstract void onDataChange (DataSnapshot snapshot)

    将使用此位置的数据快照调用此方法。每次数据变化时也会调用它

    【讨论】:

    • 如果回答对您有帮助,请点赞并标记为正确,让其他用户知道它有帮助!
    • 不幸的是,它不起作用。我把它改成了 addValueEventListener
    • addValueEventListener 会一直监听变化,所以如果你从控制台向数据库添加新数据,它会检索新数据..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2013-01-05
    • 2023-03-27
    相关资源
    最近更新 更多