2015-10-07 7 views
9

Bei der Unterklasse von FirebaseListAdapter in FirebaseUI wie kann man den obj-Schlüssel des Elements angeklickt bekommen?So erhalten Sie einen Obj-Schlüssel von FirebaseListAdapter für einen Artikel Klicken Sie auf. FirebaseUI

FirebaseListAdapter hat die folgende Methode, die itemId erhält, aber lange zurückgibt. Aber ich benötige den Objektschlüssel, der im Standard-String-Format ist.

public long getItemId(int i) { 
    return (long)this.mSnapshots.getItem(i).getKey().hashCode(); 
} 

Antwort

30

Die FirebaseListAdapter geht davon aus, dass Sie den Index/Position des Elements immer wissen Sie mit interagieren. Angesichts des Android-Kontexts ist dies sinnvoll, da Sammelansichten indexbasiert sind.

Sobald Sie die Position kennen, können Sie adapter.getRef(position) aufrufen, um die Firebase-Referenz auf das Objekt zu erhalten. Auf dieser Referenz können Sie getKey() aufrufen, um den Schlüssel zu erhalten. Obwohl ich das nur als letzten Ausweg empfehle.

+1

Danke! Ja das würde funktionieren. Aber da ich es oft brauche, um referentielle Pfade zu erstellen, habe ich gerade damit begonnen, Schlüssel und IDs im Objekt selbst zu speichern und finde es sehr praktisch. – srinivas

+1

Wir haben im FirebaseUI-Team debattiert, um die ** Referenzen ** in den Objekten selbst zu speichern, aber haben sich bisher dagegen entschieden. Der Aufwand, eine gemeinsame Basisklasse oder Injektorschnittstelle zu benötigen, schien die Vorteile für den generischen Anwendungsfall zu überwiegen. Wenn Sie einen bestimmten Anwendungsfall haben, kann die Betrachtung natürlich anders sein. Ich würde immer noch empfehlen, einen "Firebase" -Ref anstelle des Schlüssels zu halten. Refs sind leicht und fügen eine schöne typsichere Ebene nur über den Schlüssel String hinzu. –

+0

Muss eine gute Diskussion sein. In meinem Fall scheint es nützlich zu sein, wie ich in vielen bis vielen relationalen Fällen verstehe, dass Sie möglicherweise invertierte Indizes für einander in ihren eigenen Sammlungen erstellen müssen. Daher wäre eine Firebase-Referenz in diesem Fall sehr hilfreich und wird wahrscheinlich auch häufig benötigt, um viele Modellierungsanforderungen zu modellieren. – srinivas

Verwandte Themen