あなたは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()
が呼び出されたときに無効にロードアニメーションを表示することができます。このようにして、ユーザーはデータがロードされていることと終了するタイミングを知ることができます。
こんにちは。 Btw私は文書を読んで、あなたが気にしなければ質問をします。イベントを使用してデータを読み取る設計の背景は何ですか?なぜなら、データを取得するためにイベントを使用するのは変です。 –
もう一つの理由は、 'Contact'クラスのコンストラクタが' public Post(){} 'で、' public Contact(){} 'ではないからです。 } '? –
* firebaser here *データは非同期でデータベースからロードされます。データが利用可能になるまでに時間がかかることがあるので、これはコードをブロックすることなく行われます。データがロードされると、コールバック(この場合はonDataChange())がデータとともに呼び出されます。これは、インターネットベースのAPI(およびその前のほとんどのGUI)のための非常に一般的なパターンです。 –