【问题标题】:How to get only new items with addValueEventListener如何使用 addValueEventListener 仅获取新项目
【发布时间】:2017-06-09 03:10:40
【问题描述】:

当一个孩子被添加到我的 Firebase 中时,它会再次记录我的 Firebase 中的所有 Annotation_City。我怎样才能让它只打印添加的新 Annotation_City?

public void AllLocationMarkers() {
        grabMarkersFromDb = new Firebase("***");
        grabMarkersFromDb.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot locationSnapshot : dataSnapshot.getChildren()) {
                    String city_Name = (String) locationSnapshot.child("Annotation_City").getValue();
                    Log.d("City updated", "city: " + city_Name);
                }
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });
    }

【问题讨论】:

  • 我怎样才能让它只打印添加的新 Annotation_City 你已经得到它,你现在想达到什么?
  • 感谢您的回复:)。但是,例如,我还没有它。假设我的火力基地名称中总共有一个城市名称:West Covina。我运行我的程序,它会记录“West Covina”。所以说我留在我的应用程序上,根本不离开它,我继续添加另一个名为“Pomona”的城市名称,然后我的程序将记录“West Covina”和“Pomona”,但我只想添加 Pomona,因为这是新数据,西科维纳是旧数据
  • Firebase 同步数据,所以没有真正意义上的“只有新数据”的概念。但是,如果您在数据中有一些时间指示,则可以在特定时间点之后查询数据。见stackoverflow.com/questions/24713765/…

标签: java android firebase firebase-realtime-database


【解决方案1】:
grabMarkersFromDb.addChildEventListener(new ChildEventListener() {
                            @Override
                            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                                //value add then it will call
                            }

                            @Override
                            public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                            //value change
                            }

                            @Override
                            public void onChildRemoved(DataSnapshot dataSnapshot) {
                                // value remove
                            }

                            @Override
                            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {

                            }
                        });

使用 addChildEventListener。它将一一值。如果 value 被添加,那么它的方法 onChildAdded 将被调用。

read full documentation here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 2021-09-20
    • 2018-12-05
    • 1970-01-01
    • 2023-02-20
    • 2011-03-06
    • 1970-01-01
    • 2021-01-06
    相关资源
    最近更新 更多