如何在不使用按钮的情况下自动显示数据?

时间:2017-10-08 14:03:36

标签: android firebase firebase-realtime-database

目前,为了从firebase数据库获取数据,我使用button来获取数据并将其显示到textview中。但是,每次上传数据时,我都需要点击按钮才能显示数据。

因此,有没有办法在上传会话后立即显示数据而不是点击按钮来显示数据?

下面的代码显示了我如何通过点击成功运行的按钮来显示数据。

谢谢!

fetch=(Button) v.findViewById(R.id.bFetch_Schedule);
    fetch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            dayRef.child("Subject").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    String value = dataSnapshot.getValue(String.class);
                    textViewSubject_Schedule.setText(value);
                }
                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            });

            dayRef.child("What is in our class?").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    String value = dataSnapshot.getValue(String.class);
                    textViewWhat_Schedule.setText(value);
                }
                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            });


        }

    });

2 个答案:

答案 0 :(得分:1)

您需要使用addValueEventListener()代替addListenerForSingleValueEvent()

每次数据更改时,都会调用您提供给addValueEventListener()的侦听器。

您向addListenerForSingleValueEvent()提供的监听器将使用该位置的数据值调用一次。

您可能还想查看addChildEventListener()。有关doc的所有信息。

答案 1 :(得分:0)

您正在使用addListenerForSingleValueEvent,它从Firebase获取值,然后停止收听。如果您使用与addValueEventListener相同的代码,则会继续接收更新。

dayRef.child("Subject").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String value = dataSnapshot.getValue(String.class);
        textViewSubject_Schedule.setText(value);
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException(); // don't ignore errors
    }
});

您通常会将此代码放入活动的生命周期事件中,例如onCreateonStart