2016-06-24 3 views

답변

12

당신이 당신의 참조를 위해 리스너를 설정해야합니다 데이터를 얻으려면. ref.child("[email protected]").child("_email")을 사용하는 동안 데이터베이스의 특정 위치 만 가리키고 있습니다. 특정 장소에서 데이터를 검색하려면 다음 두 가지 방법을 고려하십시오.

먼저 한 번만 데이터를 검색하려면, 다음을 수행 할 수 있습니다

DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference mostafa = ref.child("Users").child("[email protected]").child("_email"); 

mostafa.addListenerForSingleValueEvent(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    String email = dataSnapshot.getValue(String.class); 
    //do what you want with the email 
} 

@Override 
public void onCancelled(DatabaseError databaseError) { 

} 
}); 

또는 어쩌면 당신은 실시간으로 값을 검색하고 같은 시간에 그것을 사용하고자하는 데이터베이스 값 변경된 값이있을 때마다 동시에 다음과 같이 변경됩니다.

mostafa.addValueEventListener(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    String email = dataSnapshot.getValue(String.class); 

    display.setText(email); 
} 

@Override 
public void onCancelled(DatabaseError databaseError) { 

} 
}); 

두 가지 방법의 차이점에 유의하십시오. 첫 번째는 한 번만 검색하고 두 번째는 값이 변경 될 때마다 데이터를 검색합니다.

내가 게시 한 코드는 템플릿 일 뿐이며 조금만 가지고 놀아야 할 수도 있습니다.

+0

upvoted for 'addValueEventListener'. –

1

은 그냥 객체에 대한 참조를 설정합니다. java firebase documentation to retrieve data을 살펴보세요.

당신은 잘못된 각도에서 개념을 찾고 있습니다

ref.child("[email protected]").child("_email").addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     // data available in snapshot.value() 
    } 
    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
    } 
}); 
관련 문제