Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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
Java 如何从Android Firebase数据库databaseRef检索所有数据->;用户ID->;唯一键_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 如何从Android Firebase数据库databaseRef检索所有数据->;用户ID->;唯一键

Java 如何从Android Firebase数据库databaseRef检索所有数据->;用户ID->;唯一键,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,这是Firebase数据库: ExchangeItemsData:->参考 lhmuj6n3g6Su1rv7XJLq5tV62yr2->用户ID -LQQ7scByWcswW2VIPM5->UniqueKey由.push()插入。getKey() //下面是uniquekey下的数据 exchangeProductName: “笔” 图像URL: “…” 电话号码: 5465464 产品说明: “使用过” 产品名称: “盖尔彭” 用户标识: “lhmuj6n3g6Su1rv7XJLq5tV62y

这是Firebase数据库:

ExchangeItemsData:->参考

lhmuj6n3g6Su1rv7XJLq5tV62yr2->用户ID

-LQQ7scByWcswW2VIPM5->UniqueKey由.push()插入。getKey()

//下面是uniquekey下的数据

exchangeProductName: “笔”

图像URL: “…”

电话号码: 5465464

产品说明: “使用过”

产品名称: “盖尔彭”

用户标识: “lhmuj6n3g6Su1rv7XJLq5tV62yr2”

我需要显示此ExchangeItemsData引用中每个用户的所有数据。我试过很多方法,但都失败了。如果有人能帮我的话,你真是太好了


提前谢谢

尝试使用此代码从数据库中检索值

public class Demo extends Activity{
FirebaseAuth mAuth;
String currentUId;
DatabaseReference usersDb;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);

    mAuth=FirebaseAuth.getInstance();
    currentUId=mAuth.getUid();        
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("ExchangeItemsData");

    ref.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists() && dataSnapshot.hasChildren()){
                for (DataSnapshot userId : dataSnapshot.getChildren()) {
                    if(!userId.getKey().equals(currentUId)) {
                        usersDb.child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot1) {
                                if(dataSnapshot1.hasChildren()){
                                    for (DataSnapshot userKey : dataSnapshot1.getChildren()) {

                                        String exchangeProductName = dataSnapshot1.child(userKey).child("exchangeProductName").getValue().toString();
                                        String imageUrl = dataSnapshot1.child(userKey).child("imageUrl").getValue().toString();
                                        String phoneNo = dataSnapshot1.child(userKey).child("phoneNo").getValue().toString();
                                        String productDesc = dataSnapshot1.child(userKey).child("productDesc").getValue().toString();
                                        String productName = dataSnapshot1.child(userKey).child("productName").getValue().toString();
                                        String userID = dataSnapshot1.child(userKey).child("userID").getValue().toString();

                                        //From here do whatever you want to do with those values
                                }      
                            }
                        }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {

                            }
                        });
                    }
                }
            }
        }
    }
}
}

要获取属于所有用户的所有值,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("ExchangeItemsData");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
            for(DataSnapshot ds : dSnapshot.getChildren()) {
                String imageUrl = ds.child("imageUrl").getValue(String.class);
                String phoneNo = ds.child("phoneNo").getValue(String.class);
                String productDesc = ds.child("productDesc").getValue(String.class);
                String productName = ds.child("productName").getValue(String.class);
                String userID = ds.child("userID").getValue(String.class);
                Log.d(TAG, productName);
            }
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage());
    }
};
ref.addListenerForSingleValueEvent(valueEventListener);

logcat中的输出将是所有用户的所有产品的所有产品名称。

您好,欢迎使用StackOverflow。请记住,SO不是代码编写服务。请编辑问题以提供最接近目标的源代码,并解释当时的输出。谢谢。这个代码也不起作用。谢谢你的建议,尽管@shehroz这是目前为止最简单的方法。非常感谢@Alex Mamo