Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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 变量仅存储Firebase数据库的最后一个值_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 变量仅存储Firebase数据库的最后一个值

Java 变量仅存储Firebase数据库的最后一个值,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在从Firebase实时数据库中检索所有电话号码,并且在dataSnapshot中检索所有号码,但在字符串obj中存储phoneNumber时,仅显示最后一个值。请问如何保存所有值?谢谢 代码 databasePhone.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) {

我正在从Firebase实时数据库中检索所有电话号码,并且在
dataSnapshot
中检索所有号码,但在字符串obj中存储
phoneNumber
时,仅显示最后一个值。请问如何保存所有值?谢谢

代码

databasePhone.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for (DataSnapshot readphone : dataSnapshot.getChildren()) {
                Log.v("tmz",""+ readphone.getKey()); //displays the key for the node
                obj = readphone.child("phoneNumber").getValue().toString();
                try {
                    FileOutputStream fileOutputStream = openFileOutput(file_name,MODE_PRIVATE);
                    fileOutputStream.write(obj.getBytes());
                    fileOutputStream.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

要解决此问题,请使用以下代码行:

ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> phoneNumberList = new ArrayList<>();
        FileWriter writer = new FileWriter("output.txt");
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String phoneNumber = ds.child("phoneNumber").getValue(String.class);
            phoneNumberList.add(phoneNumber);
            writer.write(phoneNumber);
        }
        //Do what you need to do with your list
        Log.d(TAG, phoneNumberList.toString());
        writer.close();
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
databasePhone.addListenerForSingleValueEvent(valueEventListener);
ValueEventListener ValueEventListener=new ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
List phoneNumberList=新建ArrayList();
FileWriter=newfilewriter(“output.txt”);
对于(DataSnapshot ds:DataSnapshot.getChildren()){
String phoneNumber=ds.child(“phoneNumber”).getValue(String.class);
添加(电话号码);
write.write(电话号码);
}
//用你的列表做你需要做的事情
Log.d(TAG,phoneNumberList.toString());
writer.close();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Log.d(标记,databaseError.getMessage());//不要忽略错误!
}
};
databasePhone.addListenerForSingleValueEvent(valueEventListener);

看,我把所有的电话号码都作为字符串添加到一个列表中。现在有了
phoneNumberList
,您可以对它执行任何操作。

字符串不是数组。如果您想获得以下所有信息,您必须创建一个列表来存储它们。然后通过这个过程得到所有的人。