Ricerca…


Aggiungi il database Realtime in Android

  1. Completa l' installazione e l'installazione per connettere la tua app a Firebase.
    Questo creerà il progetto in Firebase.

  2. Aggiungi la dipendenza per Firebase Realtime Database al tuo file build.gradle livello di build.gradle :

compile 'com.google.firebase:firebase-database:9.2.1'
  1. Configura le regole del database Firebase

Ora sei pronto per lavorare con il database Realtime in Android.

Ad esempio, si scrive un messaggio Hello World nel database sotto la chiave del message .

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");

Utilizzare setValue per salvare i dati

Il metodo setValue() sovrascrive i dati nella posizione specificata, inclusi eventuali nodi setValue() .

È possibile utilizzare questo metodo per:

  1. Passa i tipi che corrispondono ai tipi JSON disponibili come segue:
  • Stringa
  • Lungo
  • Doppio
  • booleano
  • Mappa <String, Object>
  • Elenco
  1. Passa un oggetto Java personalizzato, se la classe che lo definisce ha un costruttore predefinito che non accetta argomenti e ha getter pubblici per le proprietà da assegnare.

Questo è un esempio con CustomObject.
Prima definire l'oggetto.

@IgnoreExtraProperties
public class User {

    public String username;
    public String email;

    public User() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public User(String username, String email) {
        this.username = username;
        this.email = email;
    }

Quindi ottenere il riferimento al database e impostare il valore:

   User user = new User(name, email);
   DatabaseReference mDatabase mDatabase = FirebaseDatabase.getInstance().getReference();
   mDatabase.child("users").child(userId).setValue(user);

Esempio di inserimento dati o recupero dati da Firebase

Prima di capire, è necessario seguire alcune impostazioni per l'integrazione del progetto con Firebase.

  1. Crea il tuo progetto in Firebase Console e scarica il file google-service.json dalla console e inseriscilo nel modulo di livello app del tuo progetto, Segui il link per Crea progetto in console

  2. Dopo questo, è necessario aggiungere una certa dipendenza nel nostro progetto,

  • Per prima cosa aggiungi il percorso di classe nel nostro livello di progetto,

    classpath 'com.google.gms:google-services:3.0.0'

  • E poi applica il plugin in gradel a livello di app, scrivilo sotto la sezione delle dipendenze,

    apply plugin: 'com.google.gms.google-services

  • Ci sono più dipendenze che richiedono di aggiungere in gradle di livello app nella sezione delle dipendenze

    compile 'com.google.firebase:firebase-core:9.0.2'

    compile 'com.google.firebase:firebase-database:9.0.2'

  • Ora inizia ad inserire i dati nel database di Firebase, prima richiede di creare l'istanza di

    FirebaseDatabase database = FirebaseDatabase.getInstance();

    dopo la creazione dell'oggetto FirebaseDatabase creeremo il nostro DatabaseReference per inserire i dati nel database,

    DatabaseReference databaseReference = database.getReference().child("student");

    Qui student è il nome della tabella se la tabella è presente nel database, quindi inserisci i dati nella tabella, altrimenti creane una nuova con il nome dello studente, dopodiché puoi inserire i dati usando databaseReference.setValue(); funziona come segue,

    HashMap<String,String> student=new HashMap<>();

    student.put("RollNo","1");

    student.put("Name","Jayesh");

    databaseReference.setValue(student);

    Qui sto inserendo i dati come hasmap Ma puoi anche impostare come classe del modello,

  • Inizia come recuperare i dati da Firebase, stiamo usando qui addListenerForSingleValueEvent per il valore letto dal database,

      senderRefrence.addListenerForSingleValueEvent(new ValueEventListener() {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) {
                  if(dataSnapshot!=null && dataSnapshot.exists()){
                      HashMap<String,String> studentData=dataSnapshot.getValue(HashMap.class);
                      Log.d("Student Roll Num "," : "+studentData.get("RollNo"));
                      Log.d("Student Name "," : "+studentData.get("Name"));
                  }
              }
    
              @Override
              public void onCancelled(DatabaseError databaseError) {
    
              }
          });
    

Ottieni valore / i da Firebase

  1. Crea classe e aggiungi le importazioni per analizzare le informazioni:
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.IgnoreExtraProperties;

//Declaration of firebase references
private DatabaseReference mDatabase;

//Declaration of firebase atributtes
public String uID;
public String username;
public String email;

@IgnoreExtraProperties
public class User {

    //Default constructor
    public User() {

        //Default constructor required for calls to DataSnapshot.getValue(User.class)
        mDatabase = FirebaseDatabase.getInstance().getReference();

        //...
    }

    //...
}
  1. Aggiungi addListenerForSingleValueEvent() al nostro riferimento del database:
//Add new imports
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;

//...

public void getUser(String uID){

    //The uID it's unique id generated by firebase database
    mDatabase.child("users").child(uID).addListenerForSingleValueEvent(
            new ValueEventListener () {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // ...
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message
            }
    });
}
  1. Gonfia la nostra classe con le informazioni di onDataChange() nell'evento onDataChange() :
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            //Inflate class with dataSnapShot
            Users user = dataSnapshot.getValue(Users.class);

            //...
        }
  1. Finalmente possiamo ottenere atributtes diversi dalla classe Firebase come normalmente:
//User inflated
Users user = dataSnapshot.getValue(Users.class);

//Get information
this.uID = user.uID;
this.username = user.username;
this.email = user.email;

Migliori pratiche

  1. Firebase supporta 32 diversi livelli figlio, quindi è semplice scrivere un riferimento errato, per evitare di creare un riferimento privato finale:
//Declaration of firebase references
//...
final private DatabaseReference userRef = mDatabase.child("users").child("premium").child("normal").getRef();

//...

public void getUser(String uID){

    //Call our reference
    userRef.child(uID).addListenerForSingleValueEvent(
        new ValueEventListener () {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // ...
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message
            }
    });
}
  1. L'evento onCancelled() viene chiamato quando l'utente non ha accesso a questo riferimento dalle regole del database. Aggiungi codice pertinente per controllare questa eccezione se necessario.

Per maggiori informazioni visita la documentazione ufficiale



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow