Переменная хранит только последнее значение базы данных Firebase - PullRequest
0 голосов
/ 10 января 2019

Я получаю все телефонные номера из базы данных Firebase в реальном времени, и в dataSnapshot все номера извлекаются, но при сохранении phoneNumber в строке String отображается только последнее значение. Как можно сохранить все значения, пожалуйста? Спасибо.

Код

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) {

        }
    });

1 Ответ

0 голосов
/ 10 января 2019

Чтобы решить эту проблему, используйте следующие строки кода:

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);

Смотри, я получил все телефонные номера в виде строк и добавил их в список. Теперь, имея phoneNumberList, вы можете делать с ним все, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...