Нулевая строка при получении данных из Firebase - PullRequest
0 голосов
/ 11 декабря 2018

странная проблема:

Этот код:

xNames[index] = String.valueOf(currentAttendance.getXName());

ВЫХОД: "null"

, но этот код работает нормально:

xValues[index] = currentAttendance.getxValues();

ВЫХОД: 7

любая помощь, спасибо, ребята ,,,, спасибо, Я ЛЮБЛЮ ВАС

это мой фрагмент кода:

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

         int count = (int) dataSnapshot.getChildrenCount();
         int[] xValues = new int[count];
         int[] yValues = new int[count];
         String[] xNames = new String[count];

         int index = 0;

         for (DataSnapshot myDatabases : dataSnapshot.getChildren()) {

             CurrentAttendance cA = myDatabases.getValue(CurrentAttendance.class);

             if (cA != null) {
                xNames[index] = String.valueOf(cA.getXName());
                xValues[index] = cA.getUserCount();
             }

             if (cA != null) {
                yValues[index] = cA.getCurrentAttendance();
             }
             index++
        }

   }
}

Структура базы данных:

enter image description here

1 Ответ

0 голосов
/ 12 декабря 2018

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

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Attendance").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String xname = dataSnapshot.child("xname").getValue(String.class);
        Log.d(TAG, xname);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

Выходные данные в вашем logcat будут:

Vaianaa

Чтобы получить все имена пользователей, пожалуйста, используйтеследующие строки кода:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference attendanceRef = rootRef.child("Attendance");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String xname = ds.child("xname").getValue(String.class);
            Log.d(TAG, xname);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
attendanceRef.addListenerForSingleValueEvent(valueEventListener);

Вывод будет:

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