0

この質問のタイトルで述べたように、私はfirebaseの現在のユーザーから特定のデータを取得しようとしています。私のアンドロイドアプリでは、新しいフラグメントを作成する「ビューリスト」というボタンがあります。フラグメント内には、現在のユーザーをfirebaseにログインさせて、データベースに保存した保存場所にアクセスします。しかし、私は、現在のユーザーのデータベースから保存されたすべての場所を表示する方法について少し混乱しています。私は下に私のコードを掲示し、私はまたfirebaseに私の現在のデータベースのスクリーンショットを掲示します。現在のユーザーからのFirebaseデータベースの復習

Click on this link for sreenshot of my database on Firebase

case R.id.navigation_view_list: 
      fragment = new ViewListFragment(); 
      fragmentTransaction.replace(R.id.navigation_area, fragment); 
      fragmentTransaction.commit(); 
      FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); 
      FirebaseDatabase database = FirebaseDatabase.getInstance(); 
      final DatabaseReference myRef = database.getReference(); 
      myRef= myRef.child("Users").child(firebaseUser.getUid().toString()).child("Saved Location").addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
        if(dataSnapshot.exists()){ 
         for(DataSnapshot userSavedLocation : dataSnapshot.getChildren()){ 
           Log.d("savedLocation", userSavedLocation.getValue()); 
            } 
           } 
          } 

          @Override 
          public void onCancelled(DatabaseError databaseError) { 
            // handle database Error 
          } 
         }); 




         return true; 
+1

問題の詳細はもう少し具体的になりますか? –

+0

現在のユーザーのデータベースから保存されたすべての場所を表示する方法がわかりません。申し訳ありませんが、私はより具体的ではありませんでした。私は今質問を更新しました – rjimenez52

答えて

0
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
final DatabaseReference myRef = database.getReference(); 
     myRef= myRef.child("Users").child(user.getUid).child("Saved Location").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
        for(DataSnapshot userSavedLocation : dataSnapshot.getChildren()){ 
          String key=userSavedLocation.getKey(); 
          String location=userSavedLocation.child(key).getValue().toString(); 
           } 
          } 
         } 

         @Override 
         public void onCancelled(DatabaseError databaseError) { 
           // handle database Error 
         } 
        }); 

これは働くこと、アイデアは、それが値です取得するには、そのキーを使用し、その後、各保存した場所のランダムなプッシュキーを取得することです。

+0

あなたのコードが私のアプリケーションをクラッシュさせます:( – rjimenez52

+0

Log.d( "savedLocation"、userSavedLocation.getValue());が返されますか? –

+0

なぜそれがクラッシュするのですか?@ rjimenez52あなたのデータベースを修正しても、dbから2番目のユーザを削除する –

0

@Peter Haddadの回答は正しいですが、DBに少し近づけば、データが同じ方法で保存されていないことがわかります。あなたの最初のユーザーはWB ..... /保存された場所/場所があります。 2番目のユーザーd74 .../saved locationは、保存された場所内のデータとvs locationオブジェクトを保持します。次に、3人目のユーザーが最初のパターン:rpn ..../saved location/locationsに戻ります。

関連する問題