まず、私はこの質問が複数回尋ねられてきたことを知っていますが、最近の問題は私のアプリでこの問題に関心を寄せています。 Firebaseのドキュメントも読んでいます。上記のトピックからFirebaseの子と値のリスナー
What is the difference between ChildEventListener and ValueEventListener Firebase interfaces?
、両方の子供とイベントリスナーは、同じ機能を持っていますが、私は本当だと思う別の「柔軟性」、と思われます。
私は最近のプロジェクトから2つの例を説明します。
例1:
データベース構造
{
"requests" : {
"pushed_id_1" : {
"request_name" : "qjvnocnqjd",
"request_date" : "11 Oct 2017"
},
"pushed_id_2" : {
"request_name" : "qjvnocnqjd",
"request_date" : "10 Nov 2017"
}
}
}
上記構造を参照すると、私の初期計画はFirebaseにおけるクエリ方法を使用して、最後のノードの値を得ることでした。ここにコードのスニペットがあります。
myRef.child("requests").orderByKey().limitToLast(1).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Request request = dataSnapshot.getValue(Request.class);
Log.d(TAG, "requestDate: " + request.getRequest_date());
}
上記のコードでは、request.getRequest_date()
のnull値が返されました。その後、解決策を探すのに苦労して、私は以下の記事を見つけました。
Retrieve null values from Firebase database Android
TL;上記のリンクのDRは、ソリューションではなくChildListenerにValueEventListenerを変更することであり、それは私のプロジェクトに驚異を働いていたということです。次に、私の2番目の例が来る。
例2:
データベース構造ここで
{
"users" : {
"user_uid_1" : {
"user_name" : "Admin",
"join_date" : "7 Nov 2017"
},
"user_uid_2" : {
"user_name" : "Member",
"join_date" : "9 Nov 2017"
}
}
}
は、ユーザデータを取得するために私のコードの抜粋です。
myRef.child("users").child(userID).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
Log.d(TAG, "userDeets: " + user.getJoin_date());
}
}
上記コードは、user.getJoin_date()
の場合はnullを返しません。それから、私は突然、説明を求めて、前進して、これらの2人のリスナーがどのように働いて、それに応じて選ぶかを理解することができます。クエリが関与している場合は、ChildEventListenerは私が代替するのではなく、選択したものです
- :?
これらは私の具体的な質問ですか
- 上記の2つの例から、指定されたノードの1つ下にすぐにKey:Valueのペアを持つノードを指定できる場合、ValueEventListenerが使用されているようです。一方、ChildEventListenerは、Valueが関与していない場合にのみ使用されます(ChildEventListenerの「Child」は何ですか?)。この前の声明を言ってもいいですか?
この部分までお読みいただきありがとうございます。この質問が長すぎる場合はお詫び申し上げます。
迅速な対応をありがとうございます。あなたの答えとフランクの両方に基づいて、両方のリスナーがあなたの説明に従って私の例の両方のために働くことができるようです。お返事ありがとうございました! – applejuice
問題ありません! @applejuiceハッピーコーディング! –