gpt4 book ai didi

android - Firebase 实时数据库 getvalue() 未映射对象

转载 作者:行者123 更新时间:2023-11-29 15:34:18 26 4
gpt4 key购买 nike

这是我的 firebase 聊天结构(见下图)。我只想获取 amitpal_name 值而不是其他值,但此方法获取所有值
我也用过这个

enter image description here

dbreference= FirebaseDatabase.getInstance().getReference( "ChatMessage").child( "msg");

    dbreference.orderByChild("Ref").addChildEventListener( new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {[![enter image description here][1]][1]
Iterator iterator=dataSnapshot.getChildren().iterator();
while (iterator.hasNext()){
String chatis=(String) ((DataSnapshot)iterator.next()).getValue();
Log.e( "ADDED IS-" , chatis);
}

}

@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Iterator iterator=dataSnapshot.getChildren().iterator();
while (iterator.hasNext()){
String chatis=(String) ((DataSnapshot)iterator.next()).getValue();
Log.e( "ADDED chng-" , chatis);
}
}

@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

}

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

}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.e( "ERRO FBDB-", databaseError.getMessage());

}
} );

dbreference= FirebaseDatabase.getInstance().getReference( "ChatMessage").child( "msg").child("amitpal_name");

但它没有提供任何信息或值请在这里帮助我

我也尝试过下面的方法,给了我很好的预期结果,但主要问题是我想在不使用服务的情况下在 firebaserealtime Chat 中更新数据库时在 ListView 中反射(reflect)新值,因为我需要下面的这个方法

public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s)

最佳答案

这是你的引用

    refAmitPat = FirebaseDatabase.getInstance().getReference().child("ChatMessage").child("msg");

这是您的数据库引用中的子事件监听器

refAmitPat.child("amitpal_name").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Log.d("amitPal",dataSnapshot.getValue()+"");
// add message value to list and call notify datasetchange method
}

@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Log.d("amitPal",dataSnapshot.getValue()+"");
}

@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

}

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

}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

你在做什么,错误的是,你正在迭代数据快照,而当你将消息推送到用户名下作为 child 时, child 将在 childAdded 方法中获得数据快照,这意味着你正在迭代的数据快照实际上是你的消息带有按键和消息值。所以没有必要迭代它。只需调用 datasnapshot.getValue() 函数即可获取消息值

关于android - Firebase 实时数据库 getvalue() 未映射对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55016979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com