2017-02-22 6 views
0

だから私は、データベース内の最初の項目の「データのスナップショット」を取得するために管理している次のコードを使用して、私のFirebaseデータベースseen hereからの読み込み:Firebaseの値からデータを読み取るにはどうすればよいですか?

FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    DatabaseReference myRef = FirebaseDatabase.getInstance().getReference("messages"); 

    myRef.orderByPriority().limitToFirst(1).addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Log.e("data:", ""+dataSnapshot.getChildren()); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.e(TAG, "The read failed: "); 
     } 
    }); 

これが返されます。

datasnapshot: "DataSnapshot {key = message, value = {ygmailcom100={name=tom, message=kys, [email protected]}} }" 

私を質問はどうなっていますか...これらの異なるビット(名前、msg、電子メール(これら3つのビットのデータの親、 'ygmailcom100'ビット)にアクセスする方法)にアクセスして、データを文字列に入れます。また、文字列にデータを読み込んだら、メッセージキーからその値を削除する方法を教えてください。

私はソフトウェア開発に新しいので、私の無知を謝りますが、どんな洞察も高く評価されます。

答えて

0

モデルを作成することができます値をモデルクラスにマップします。

このコードを参照できます。

モデルクラス:User.Java

public class User { 

    private String username; 
    private int accessLevel; 
    private boolean adminApproved; 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public int getAccessLevel() { 
     return accessLevel; 
    } 

    public void setAccessLevel(int accessLevel) { 
     this.accessLevel = accessLevel; 
    } 

    public boolean isAdminApproved() { 
     return adminApproved; 
    } 

    public void setAdminApproved(boolean adminApproved) { 
     this.adminApproved = adminApproved; 
    } 
} 


マッピングDataSnapshot値POJOに

mRef = new Firebase("<<FIREBASE_URI>>").child("<<CHILD_NODE_NAME>>"); 

mRef.addValueEventListener(new ValueEventListener() { 
    @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      try { 

       for(DataSnapshot ds : dataSnapshot.getChildren()) { 
        User expense = ds.getValue(User.class); 
        users.add(expense.getUsername()); 
       } 

      adapter.notifyDataSetChanged(); 

     }catch(Exception e){ 
      Log.e("MODEL_ERROR","Error Occurred while mapping to model"); 
     } 
    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
     Log.e("FIREBASE",firebaseError.getMessage()); 
    } 
}); 


Firebase DBユーザーデータ

"users" : { 
    "-KY0ZdsNNE1eDOTXdzaF" : { 
     "accessLevel" : 0, 
     "adminApproved" : false, 
     "username" : "dummyUser2" 
    } 
} 



注:それはないです良いpr DBにユーザ情報を格納するactice。これは参考としてのみ使用してください。

0

Android firebase query with multiple orderBy

ASTRを取得し、子を使用した親から、子供を取得するには親

databasereference1.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      GenericTypeIndicator<Map<String, HashMap<String, HashMap<String, String>>>> genericTypeIndicator = new GenericTypeIndicator<Map<String, HashMap<String, HashMap<String, String>>>>() { 
      }; 

      Map<String, HashMap<String, HashMap<String, String>>> maps = dataSnapshot.getValue(genericTypeIndicator); 
      Object[] str = maps.keySet().toArray(); 
      for (Object aStr : str) { 

      } 
      //adapter.notifyDataSetChanged(); 
      //L.tmlong(getActivity(), Arrays.toString(maps.values().toArray())); 
     } 

を取得するには( 'メッセージ/' + ASTR)

databasereference2.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      GenericTypeIndicator<Map<String, HashMap<String, String>>> genericTypeIndicator = 
        new GenericTypeIndicator<Map<String, HashMap<String, String>>>() { 
        }; 

      Map<String, HashMap<String, String>> maps = dataSnapshot.getValue(genericTypeIndicator); 
      Object[] str = maps.keySet().toArray(); 
      for (Object aStr : str) { 

       } 


      } 

      //adapter.notifyDataSetChanged(); 
      //L.tmlong(getActivity(), Arrays.toString(maps.values().toArray())); 
     }