Получение всех данных под пользовательским узлом FireBase

#android #firebase #firebase-realtime-database

#Android #firebase #firebase-база данных в реальном времени

Вопрос:

Я хочу получить все данные в узле посещаемости, например, «Присутствует», «В отпуске» и т.д. Затем я хочу отобразить данные в ListView или RecycleView . Какова основная логика для этого?

Это все, что я получил:

 package com.example.attendancemanagementsystem;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class ViewRecord extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_record);      

    }
}
  

Вот извлекаемые данные.

Я хочу взять данные в разделе quot;Посещаемостьquot; с ключом и значением

Комментарии:

1. Под каким дочерним элементом Firebase?

2. В разделе «Посещаемость»

3. Итак, вы хотите получить все эти значения, Present , On Leave и так далее, верно?

4. Да, вы правы .. я хочу показать их в listview или recycleview… Алекс Мамо

Ответ №1:

Согласно вашему комментарию, чтобы отобразить все эти значения в ListView , пожалуйста, используйте следующий код:

 ListView listView = (ListView) findViewById(R.id.list_view);
List<String> values = new ArrayList<>();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, values;
listView.setAdapter(arrayAdapter);

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference attendanceRef = rootRef.child("Users").child(uid).child("Attendance");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String key = ds.getKey();
            String value = ds.getValue(String.class);
            values.add(key   ", "   value);
        }
        arrayAdapter.notifyDatasetChanged();
    }

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

Комментарии:

1. Идеальный.. Это работает, я получаю данные сейчас,,, Но я хочу еще кое-что… Я хочу значения вместе с ключами … bcz мне нужны даты, в которые учащийся присутствует или отсутствует,,, Как я могу это сделать,,, … Большое спасибо..

2. Приятно слышать, что это сработало 🙂 В таком случае, пожалуйста, ознакомьтесь с моим обновленным ответом.

3. Wowwww…So быстро и очень точно…. Большое спасибо …. Выполнил все мои требования….

Ответ №2:

Сначала проверьте наличие зависимостей в вашем приложении gradle.

 implementation 'com.google.firebase:firebase-database:16.1.0'
implementation 'com.google.firebase:firebase-core:16.0.7'
  

Инициализировать переменную.

 private lateinit var mStorageRef: StorageReference
private lateinit var auth: FirebaseAuth
  

Затем получите ссылку на вашу базу данных firebase.

 mStorageRef = FirebaseStorage.getInstance().reference
auth = FirebaseAuth.getInstance()
  

После этого получите нужные данные с этого узла.

 StorageRef.child("Users/${auth.currentUser!!.uid}/attendance")
  

Комментарии:

1. Можете ли вы добавить какое-нибудь объяснение к своему коду, чтобы другие могли извлечь из него уроки?