2016-10-19 12 views
0
/users: 
- user1 
     - name: user1name 
     - /contacts 
       - user2 
       - user3 
       ..... 
- user2 
     - name: user2name 
     .... 

これは私の現在のfirebaseデータベースです。 user1がログインすると、彼が持っている連絡先を確認してUIDを取得します。私はUIDを持っているので、彼の連絡先の名前を読もうとしています。彼の連絡先の名前はどのように入手できますか?/usersディレクトリ全体を読まなければならないのですか、あるいは私が必要とするデータだけを取得するクエリを使用することはできますか? (この場合:USER2とユーザー3名)Android用Firebaseを使用して異なるディレクトリからデータを読み取る

+0

ネストされた読み取りを行います。したがって、 '/ users/$ uid/contacts'を取得し、そこのキーと各キーロード'/users/$ key'をループします。 –

+0

ありがとうございます。まさに私が知りたかったもの。このコメントを回答として投稿すると、それを解決策としてマークします。 – firefly1337

答えて

0

あなたは何だろうネストされた読み取り。したがって、/users/$uid/contactsを取得し、そこのキーと各キーロード/users/$keyに対してループします。

0

はすでに、ユーザーが選択していると仮定すると、次の2つの方法でそれについて移動することができます

1)データベースの参照に.child(String user);を使用してください。

2)データベースのURLを宣言している可能性があります。 URLに+ "/" + String user;を追加します。

これらの方法をさらに使用して、そのユーザーの連絡先を解析することができます。

最後に、連絡先を取得するには、ループスルーする必要があります。ここで

はサンプルコードです:

mRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      for (DataSnapshot msgSnapshot : snapshot.getChildren()) { 
        mDataset.add(msgSnapshot.getKey()); 
        mAdapter.notifyDataSetChanged(); 

      } 
     } 

このコードは(、リストビューを移入するために使用することができたグリッドビューなど)のデータを取得し、アダプタに追加します

+0

お返事ありがとうございます。私はユーザーの名前のような異なるプロパティを取得する方法を知っています。私はuser1の連絡先であるすべてのユーザーの名前を取得する方法を尋ねようとしていました。私は何を言おうとしているのか理解してくれることを願っています名前は1つではありません。それはいくつかの名前についてです。ループ内のデータを取得するのか、別の方法がありますか? – firefly1337

+0

複数のエントリ(連絡先リストには明白です)がある場合は、ループを作成する必要があります。 –

関連する問題