Android Firebase子节点侦听器

博兰迪安

我想知道是否有一些回调或某些可以在Firebase database节点中的子项更改时触发方法的方法

在此处输入图片说明

例如,此“用户”节点,每个用户由他自己UID他的所有数据保存。我正在寻找一种方法,只要profilePic更改该方法即可触发

我已经尝试过了addChildEventListeneraddValueEventListener但是都没有用。

这是例子

refToUsers.getReference(Params.USERS).child(currentUser.getUid()).child(Params.PROFILEPIC).addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {

    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {
        Glide.with(getApplication()).load(s).apply(new RequestOptions()
                .placeholder(R.mipmap.ic_launcher))
                .into(cvNavUserProfile);
    }

    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {

    }

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

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

另一种方法

refToUsers.getReference(Params.USERS).child(currentUser.getUid()).child(Params.PROFILEPIC).addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Log.d(TAG,"DataSnapshot: " + dataSnapshot.toString());
        String profilePic = null;

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

profilePic更改时不会触发这些方法有什么办法解决吗?像是每次触发profilePicis的回调或侦听update/change

此外,该方法仅在用户处于特定活动时才可以使用吗?即使用户不在该方法的活动中,也可以触发它吗?

亚历克斯·莫莫

我不知道您Params.USERS的值是什么Params.PROFILEPIC,但是请在下面将我的解决方案与硬编码值一起使用:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String profilePic = dataSnapshot.child("profilePic").getValue(String.class);
        Log.d(TAG, profilePic);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Log errors
    }
};
uidRef.addValueEventListener(valueEventListener);

添加值事件侦听器时,onDataChange()每次profilePic属性更改时都会触发方法

也不要忽略错误。如您所见,我已经将它们记录在该onCancelled()方法中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章