Zoeken…


Voeg de Realtime-database toe in Android

  1. Voltooi de installatie en configuratie om uw app met Firebase te verbinden.
    Hiermee wordt het project in Firebase gemaakt.

  2. Voeg de afhankelijkheid voor Firebase Realtime Database toe aan uw build.gradle bestand op build.gradle :

compile 'com.google.firebase:firebase-database:9.2.1'
  1. Configureer Firebase-databaseregels

Nu bent u klaar om te werken met de Realtime-database in Android.

U schrijft bijvoorbeeld een Hello World bericht naar de database onder de message .

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

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

SetValue gebruiken om gegevens op te slaan

De methode setValue() overschrijft gegevens op de opgegeven locatie, inclusief eventuele onderliggende knooppunten.

U kunt deze methode gebruiken om:

  1. Passtypen die overeenkomen met de beschikbare JSON-typen als volgt:
  • Draad
  • Lang
  • Dubbele
  • Boolean
  • Kaart <String, Object>
  • Lijst
  1. Geef een aangepast Java-object door als de klasse die het definieert een standaardconstructor heeft die geen argumenten aanneemt en openbare getters heeft voor de toe te wijzen eigenschappen.

Dit is een voorbeeld met een CustomObject.
Definieer eerst het object.

@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;
    }

Haal vervolgens de database-referentie op en stel de waarde in:

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

Voorbeeld voor het invoegen van gegevens of het ophalen van gegevens uit Firebase

Voordat u begrijpt, moet u een aantal instellingen volgen voor projectintegratie met firebase.

  1. Maak uw project in Firebase Console en download het google-service.json-bestand van de console en plaats het in de app-level module van uw project, volg de link voor Create Project in console

  2. Hierna moeten we enige afhankelijkheid in ons project toevoegen,

  • Voeg eerst het klassenpad toe aan ons gradiënt op projectniveau,

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

  • En pas daarna de plug-in toe op app-niveau gradel, schrijf het hieronder in het gedeelte afhankelijkheid,

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

  • Er zijn te veel afhankelijkheid die moet toevoegen in app-niveau gradle in afhankelijkheid sectie

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

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

  • Begin nu met het invoegen van gegevens in de firebase-database, eerst een instantie van maken

    FirebaseDatabase database = FirebaseDatabase.getInstance();

    na het maken van het FirebaseDatabase-object gaan we onze DatabaseReference maken voor het invoegen van gegevens in de database,

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

    Hier is student de tabelnaam als er een tabel in de database bestaat, voeg dan gegevens in de tabel in, anders maak je een nieuwe met studentnaam, hierna kun je gegevens invoegen met databaseReference.setValue(); functie zoals volgen,

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

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

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

    databaseReference.setValue(student);

    Hier voeg ik gegevens in als hasmap Maar u kunt ook instellen als modelklasse,

  • Begin met het ophalen van gegevens uit firebase, we gebruiken hier addListenerForSingleValueEvent voor leeswaarde uit 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) {
    
              }
          });
    

Krijg waarde / s van firebase

  1. Maak een klasse en voeg invoer toe aan ontleedinformatie:
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. Voeg addListenerForSingleValueEvent() aan onze database-referentie:
//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. Blaas onze klas op met firebase-informatie in het onDataChange() -evenement:
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

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

            //...
        }
  1. Eindelijk kunnen we verschillende atributtes van firebase-klasse krijgen zoals normaal:
//User inflated
Users user = dataSnapshot.getValue(Users.class);

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

Best practices

  1. De vuurbasis ondersteunt 32 verschillende kindniveaus, dan is het eenvoudig om verkeerde referenties te schrijven, om dit te ontwijken, om een definitieve privéreferenties te creëren:
//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. De gebeurtenis onCancelled() wordt aangeroepen wanneer de gebruiker geen toegang heeft tot deze referentie door databaseregels. Voeg desgewenst relevante code toe om deze uitzondering te beheren.

Voor meer informatie, bezoek de officiële documentatie



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow