2016-10-13 11 views
1

enter image description hereFirebaseでフィールドの値を取得するには?

私は上記のFirebaseデータベースを持っていると言います。 Firebaseの自動生成キーを使用して、連絡先オブジェクトと各フィールドを取得します。どうやってするの? getValue()が存在しないため、以下に、実際のコードではありません、(ところでこれは私が「何を表現するためだけです:

Query ref = FirebaseDatabase.getInstance(). 
    getReference("contacts").orderByKey().equalTo("-KTwyKpIifsYAZiZd861"); 

そしておそらく、このようにそれを使用します。

は、私のようなものを想像しました。 mがやろうとしている。)

String name = ref.getValue("name"); 
String city = ref.getValue("city); 
// and so on. 

ので、Firebaseの個々のフィールドの値を取得する方法?

答えて

2

あなたはContactクラスを作成することができます

@IgnoreExtraProperties 
public class Contact { 
    public String address; 
    public String city; 
    public String code_name; 
    public String name; 

    public Contact() { 

    } 
} 

をしてValueEventListenerを使用して値を取得する:

mDatabase = FirebaseDatabase.getInstance().getReference(); 

// ... 

mDatabase.child("contacts").child("-KTwyKpIifsYAZiZd861").addListenerForSingleValueEvent(
     new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        Contact contact = dataSnapshot.getValue(Contact.class); 
        String name = contact.name; // "John Doe" 
        String city = contact.city; // "Texas" 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
     }); 

は公式docsを参照してください。フランク・バンPuffelenさんのコメントによるとアスカーによって書かれ


詳細:

誰もが、混乱のでFirebaseから取得したデータは、(私のような)イベントを必要とする理由の将来にこれを読めば、私たちがインターネットから何かをロードするとき、いつもそれが即座にロードされるとは期待できないからです。だから私たちはそれを非同期的に処理する必要があり、このFirebaseのケースでは、上記のイベントを使用します。例えば

、あなたはValueEventListener()は、データを取得するために接続する前に、あなたは、ユーザーにonDataChange()onCancelled()が呼び出されたときに無効にロードアニメーションを表示することができます。このようにして、ユーザーはデータがロードされていることと終了するタイミングを知ることができます。

+0

こんにちは。 Btw私は文書を読んで、あなたが気にしなければ質問をします。イベントを使用してデータを読み取る設計の背景は何ですか?なぜなら、データを取得するためにイベントを使用するのは変です。 –

+0

もう一つの理由は、 'Contact'クラスのコンストラクタが' public Post(){} 'で、' public Contact(){} 'ではないからです。 } '? –

+2

* firebaser here *データは非同期でデータベースからロードされます。データが利用可能になるまでに時間がかかることがあるので、これはコードをブロックすることなく行われます。データがロードされると、コールバック(この場合はonDataChange())がデータとともに呼び出されます。これは、インターネットベースのAPI(およびその前のほとんどのGUI)のための非常に一般的なパターンです。 –

関連する問題