Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase查询获取值_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android Firebase查询获取值

Android Firebase查询获取值,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有一个子数据列表,希望有一个特定的值 我的Firebase结构: 现在,我只有子“Text”和currendUser“0zwtyRwgnogC8Qk91AtHj7amZb63” 那么我怎样才能得到“text”和“user_id”的值呢 我的源代码: mDatabaseText = FirebaseDatabase.getInstance().getReference().child("Text"); query = mDatabaseText.startAt(mCurrentUse

我有一个子数据列表,希望有一个特定的值

我的Firebase结构:

现在,我只有子“Text”和currendUser“0zwtyRwgnogC8Qk91AtHj7amZb63”

那么我怎样才能得到“text”和“user_id”的值呢

我的源代码:

 mDatabaseText = FirebaseDatabase.getInstance().getReference().child("Text");
    query = mDatabaseText.startAt(mCurrentUser.getUid());
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                for (DataSnapshot textSnapshot : dataSnapshot.getChildren()) {

                  /*  String text = textSnapshot.getKey();
                    Toast.makeText(getActivity(), text, Toast.LENGTH_SHORT).show(); */

                    TextModel textModel = chatSnapshot.getValue(TextModel.class);

                    String t = textModel.getText();
                    Log.i("!!!!!!!text", t);
                    Toast.makeText(getActivity(), t, Toast.LENGTH_SHORT).show();
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
但是这个代码不起作用,为什么

我使用了查询
startAt

请使用以下代码:

FirebaseDatabase rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference currentUserIdRef = rootRef.child("Text").child(currentUserId);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String userId = (String) ds.getKey();

            DatabaseReference userIdRef = rootRef.child("Text").child(currentUserId).child(userId);
            ValueEventListener eventListener = new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    String user_id = (String) dataSnapshot.child("user_id").getValue();
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    throw databaseError.toException(); // don't ignore errors
                }
            };
            userIdRef.addListenerForSingleValueEvent(eventListener);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException(); // don't ignore errors
    }
};
currentUserIdRef.addListenerForSingleValueEvent(eventListener);
其中,
currentUserId
是您说您已经拥有的变量

希望有帮助。

请使用以下代码:

FirebaseDatabase rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference currentUserIdRef = rootRef.child("Text").child(currentUserId);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String userId = (String) ds.getKey();

            DatabaseReference userIdRef = rootRef.child("Text").child(currentUserId).child(userId);
            ValueEventListener eventListener = new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    String user_id = (String) dataSnapshot.child("user_id").getValue();
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    throw databaseError.toException(); // don't ignore errors
                }
            };
            userIdRef.addListenerForSingleValueEvent(eventListener);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException(); // don't ignore errors
    }
};
currentUserIdRef.addListenerForSingleValueEvent(eventListener);
其中,
currentUserId
是您说您已经拥有的变量


希望有帮助。

mDatabaseText=FirebaseDatabase.getInstance().getReference().child(“Text”);query=mDatabaseText.orderByKey().startAt(mCurrentUser.getUid()).endAt(mCurrentUser.getUid()+“\uf8ff”);query.addValueEventListener(new ValueEventListener(){@Override public void onDataChange(DataSnapshot DataSnapshot){if(DataSnapshot.exists()){for(DataSnapshot chatSnapshot:DataSnapshot.getChildren()){final String key=chatSnapshot.getKey();}}}}}}}这是什么?我不明白你的意思。很高兴听到这个消息。干杯!mDatabaseText=firebashdatabase.getInstance().getReference().child(“Text”);query=mDatabaseText.orderByKey().startAt(mCurrentUser.getUid()).endAt(mCurrentUser.getUid()+“\uf8ff”);query.addValueEventListener(新值EventListener(){@Override public void onDataChange(DataSnapshot DataSnapshot){if(DataSnapshot.exists()){for(DataSnapshot chatSnapshot:DataSnapshot.getChildren()){final String key=chatSnapshot.getKey();}}}}}这是什么?我不明白你的意思。很高兴听到这个消息。干杯!