Java 如何在Firebase中获得儿童的价值

Java 如何在Firebase中获得儿童的价值,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我在Firebase有这样的结构: 我有密码: DatabaseReference curtidasRef = firebaseRef.child("postagens-curtidas").child(feed.getId()).child("qtdCurtidas"); 我的数据库结构: 我的问题是:如何获取qtdCurtidas的值?您可以使用valueEventListener获取数据。首先定义变量。正如我从你的截图中看到的,它是整数变量。然后将valueEventListener

我在Firebase有这样的结构:

我有密码:

DatabaseReference curtidasRef = firebaseRef.child("postagens-curtidas").child(feed.getId()).child("qtdCurtidas");
我的数据库结构:


我的问题是:如何获取
qtdCurtidas
的值?

您可以使用valueEventListener获取数据。首先定义变量。正如我从你的截图中看到的,它是整数变量。然后将valueEventListener设置为数据库引用

int myValue;

curtidasRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                             myValue= dataSnapshot.getValue(Integer.class);
            }

            @Override
            public void onCancelled(DatabaseError error) {
               //TODO: some codes to handele error
            }
        });

要获取您的
qtdCurtidas
的值,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("postagens-curtidas");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            long qtdCurtidas = ds.child("qtdCurtidas").getValue(Long.class);
            Log.d(TAG, "qtdCurtidas: " + qtdCurtidas);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage());
    }
};
ref.addListenerForSingleValueEvent(valueEventListener);
logcat中的输出将为:

qtdCurtidas: 1

对不起,弄错了。我编辑代码。应使用dataSnapshot而不是PostSnapshot如果您的答案显示myValue“Transform myValue”中有错误,则应将myValue变量定义为类变量。例如,公共类MyActivity扩展了AppCompatActivity{int myValue;您应该在代码中告诉您,
myValue
是一个全局变量,否则只会给出将其作为最终数组元素的错误。错误“Transform myValue”为最终一个元素数组,我如何修复?以这种方式声明变量??“final int[]qtdCurtidas=new int[1];”和“qtdCurtidas[0]=dataSnapshot.child(“qtdCurtidas”).getValue(Integer.class)这是正确的吗?你的问题在@LuisFelipe解决了吗?还没有,但是解决方案2正在进行中。你的建议是正确的,但是我有更多的孩子叫'qtdCurtidas',我想得到一个特别的。我想在feed.getId中得到'qtdCurtidas'。我将添加到我的数据库图片中,我如何在feedId中得到这个值?使用相同的base您在回答@Alex MamoIn时使用的方式与我在回答中向您展示的方式完全相同。您可以获得每个孩子下的qtdCurtidas值。您是否尝试过该代码,结果如何?