如何更新Firebase上的项目列表?

时间:2016-07-01 10:34:45

标签: java android firebase firebase-realtime-database

如何更新Firebase数据库中的项目列表。我可以使用setValue设置新列表,但我找不到如何添加一个列表项。 (我不希望发送列表中的所有项目仅更新一个项目。)

在此示例中,我尝试执行此操作,但方法ref.updateChildren无法正常工作。它向我展示了databaseReference,但我没有看到Firebase有任何变化。

final DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("apps");
        for (final App app : apps) {
            ref.child(app.getFirebaseKey()).addValueEventListener(new ValueEventListener(){

                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if (!dataSnapshot.exists()) {
                        ref.setValue(app.getFirebaseValue());
                    } else {
                        //check need add my phone or no.
                        FirebaseApp firebaseApp = dataSnapshot.getValue(FirebaseApp.class);
                        String myPhone = app.getFirebaseValue().getPhones().get(0);
                        if (firebaseApp.getPhones().contains(myPhone)) {
                            //do nothing
                        } else {
                            firebaseApp.getPhones().add(myPhone);
                            Map<String, Object> updates = new HashMap<String, Object>();
                            updates.put("phones", firebaseApp.getPhones());
                            ref.updateChildren(updates, new DatabaseReference.CompletionListener() {
                                @Override
                                public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                                    if (databaseError == null) {
                                        Log.i(TAG, "databaseReference=" + databaseReference);
                                    } else {
                                        Log.i(TAG, "databaseError=" + databaseReference);
                                    }
                                }
                            });
                        }
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }

1 个答案:

答案 0 :(得分:0)

这是我的错。我在ref.child(app.getFirebaseKey());

的内部类intead中使用了ref