Daten aus Firebase lesen?

  • Antworten:17
Hanno Wallah
  • Forum-Beiträge: 49

23.01.2017, 15:46:28 via Website

MIt addListenerForSingleValueEvent und onDataChange bekommt man DataSnapshot, indem die Daten enthalten sind. Dies geschieht aber erst verspätet und das Programm ist weitergelaufen. Daher nutzt diese Technik nicht, es sei es gibt einen Weg um die Daten dennoch zu bekommen. Wie ist die Frage.
Bitte um Nachsicht, falls die Frage zu billig ist.

Antworten
swa00
  • Forum-Beiträge: 3.704

23.01.2017, 17:29:32 via Website

Hallo Hanno ,

ehrlich gesagt , kann ich gar keine Frage erkennen :-)

Ein wenig mehr Input (ggf Code) wäre schon hilfreich.

Und wir schätzen es , wenn man hier sich mit einem netten "Hallo" , " Bitte" und "Danke" meldet,
Wir sind auch reale Menschen und du möchtest ja unsere Hilfe resp. Zeit in Anspruch nehmen.

— geändert am 23.01.2017, 17:29:59

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten
Hanno Wallah
  • Forum-Beiträge: 49

23.01.2017, 18:11:53 via Website

Hallo Pascal,
ihr habt recht. Ist nicht meine Art; aber ist passiert.
Also die konkrete Frage ist wie folgt:
wie kann ich aus der Firebase Daten auslesen? Das was ich bisher inFirebase Dokumenten gelesen habe, komme ich nicht zurecht. Daher suche ich eine einfache Möglichkeit.
Danke wenn mir jemand weiterhelfen knn.
FOlgendes habe ich probiert: ich habe addListenerForSingleValueEvent definiert und die onDataChange Methode implementiert.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.01.2017, 18:19:13 via Website

Hallo Hanno,
wenn du mich so nett ansprichst, dann antworte ich doch mal ;)

Welche Daten willst du konkret aus Firebase laden?
Du musst wissen, das Firebase alles anbietet, von Push Nachrichten (FCM,über CrashReport hin zu DBs)
Ich vermute du hast dort eine DB oder?

— geändert am 23.01.2017, 18:19:24

LG Pascal //It's not a bug, it's a feature. :) ;)

swa00

Antworten
Dee
  • Forum-Beiträge: 13

23.01.2017, 19:17:37 via Website

hmm... kannst du das konkretisieren?

Antworten
swa00
  • Forum-Beiträge: 3.704

23.01.2017, 20:04:40 via Website

Sag , meist du zufällig einen Crash report, weil du ja deine App veröffentlicht hast.

(P.S übrigens ein schönes Layout)

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

25.01.2017, 09:31:25 via Website

[[cite Hanno Wallah]]
FOlgendes habe ich probiert: ich habe addListenerForSingleValueEvent definiert und die onDataChange Methode implementiert.

Genau so funktioniert das.
Dann bekommst du ein Ergebnis, was von der Firebase API automatisch von der JSON Struktur in ein Objekt transformiert wird.

    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // Get Post object and use the values to update the UI
        Post post = dataSnapshot.getValue(Post.class);
        // ...
    }

Wenn die Feldnamen in dem Beispiel (Post.class) genau mit den Namen deiner Attribute in der Firebase DB übereinstimmen, dann kriegt er die Transformation automatisch hin. Du kannst aber auch per Annotation sagen welches Feld aus Firebase in welche Variable der Klasse gehört. z.B:

@PropertyName("username")
private String mUserName;

Siehe: https://firebase.google.com/docs/database/android/read-and-write#listen_for_value_events

— geändert am 25.01.2017, 09:37:44

swa00

Antworten
Hanno Wallah
  • Forum-Beiträge: 49

25.01.2017, 12:51:34 via Website

Hallo Stefan,
ich wollte kein App veröffentlichen und habe auch keins. Ich weiss es nicht wie es dazu gekommen sein kann. Ich habe lediglich mit Firebase (Datebase und Storage) etwas ausprobiert und daraaufhin sind einige Crash entstanden. Weiss du wie es geschehen sein kann????

VG

Antworten
swa00
  • Forum-Beiträge: 3.704

25.01.2017, 12:55:04 via Website

Sorry Hanno,

der Beitrag darüber war von Dee - hab ich mich wohl verguggt :-)
Rafael hat dir ja schon eine schöne Antwort gegegben

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Hanno Wallah
  • Forum-Beiträge: 49

25.01.2017, 13:01:54 via Website

Hallo Pascal,
mittlerweile weiss ich, wo der Fehler liegt, aber weiss ich nicht wie ich dies beheben kann. Also folgendes habe ich gemacht:
Ich Rufe aus Activity "A" eine Activity "B" ( mit startActivityForResult) auf. In der onActivityResult Methode starte ich eine weiere Activität "C" ( auch mit startActivityForResult). In dieser (Aktivität "C") rufe ich eine Methode der eigenen Klasse XXX (keine Aktivitaät Classe sondern extends Firebase) auf. Dies funktioniert nicht, da das Programm in der Coding weiterläuft. Hingegen; wenn ich diese Methode in der Aktivität "C" programmiere und aus dieser aufrufe, funktioniert gut. Dies ist aber nicht der SInn der Sache. Die Frage
1. darf man aus er onActivityResult Methode eine weitere Activity ("C") aufrugfen? und
2. warum läuft das programm weiter in der Activity "C", ohne die Ergebnisse aus der Methode der eigenen Klasse (XXX) gewartet zu haben.
VG

— geändert am 25.01.2017, 13:02:13

Antworten
swa00
  • Forum-Beiträge: 3.704

25.01.2017, 13:28:45 via Website

Hallo Hanno,

Das Erste was ich mich Frage : Warum rufst du die Activities aus ActivityResult auf und machst im Prinzip,
- wenn ich es richtig verstanden habe - ein "Spaghetti" Aufruf von drei Activites + eine Klasse .
Und das wohl direkt in einem Zug ?

A dann B dann C ....

Welchen zweck verfolgst du ??

— geändert am 25.01.2017, 13:30:09

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Hanno Wallah
  • Forum-Beiträge: 49

25.01.2017, 13:36:30 via Website

Hallo Stefan,
wenn ich die Aktivitäten hintereinander aufrufe, dann läut das Programm witer, ohne die Ergebnisse auf die erste respektive auf die zweite Aktivität gewartet zu haben. Da hinter Aktivitäe A, B, C eigene Views angesteuert werden und die Daten auch aus Firebase geholt werden, wusste ich nicht wie ich es bewwerkstelligen solll? Vieleicht bin ich mit meiner Vorgehensweise auf dem Holzweg. An dieser Stelle benötige ich ein Hinweis. Vielen Dank
VG

Antworten
swa00
  • Forum-Beiträge: 3.704

25.01.2017, 13:39:42 via Website

Ich weis ja nicht, ob das nun jetzt Passend für dich ist .

Ich würde allerdings das ein wenig anders umsetzen.

a) Nur eine Activity mit Pager und den Rest als Fragmente
b) Nur eine Activity, verschiedene Views und den Kern mit Klassen (halt mehr OOP)

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Hanno Wallah
  • Forum-Beiträge: 49

25.01.2017, 13:42:26 via Website

Danke Stefan, werde ich es so umstellen. Aber wie kann ich verhindern, dass der App veröffentlich wird??? Bitte um Hilfe.
VG

— geändert am 25.01.2017, 14:22:00

Antworten
Hanno Wallah
  • Forum-Beiträge: 49

25.01.2017, 13:45:01 via Website

Hallo
ich versuche aus einer Activity die Daten aus Firebase Storage (in diesem Fall Images, die vorher gespeichert hatte) gelesen. Dabei gehe ich wie folgt vor:

.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(byte[] bytes) {
bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
bytes1 = bytes}});

Im Anschluss möchte ich die Daten an einem Adapter übergeben und diese in der Liste darstellen.
Die onSuccess Methode wird viel später pro zessiert, sodass meine Liste dann ohne Daten angezeigt wird. Was fehlt noch oder habe ich komplett falsch implementiert?
Bitte um Rat. VG

— geändert am 27.01.2017, 08:17:49

Antworten
Hanno Wallah
  • Forum-Beiträge: 49

27.01.2017, 08:25:09 via Website

Hallo Pascal,
ich habe die neue Frage in diesem erstellt. Bitte um es anzuschauen und eine Idee zu geben.
Danke und VG

Antworten
Hanno Wallah
  • Forum-Beiträge: 49

01.02.2017, 16:01:10 via Website

Danke für den Tip.

Antworten