2016-03-07 120 views
0

我最近遷移到了Firebase。我已經閱讀了Firebase Android api文檔,通過JSON從數據庫檢索數據。有方法onDataChange(DataSnapshot snapshot)來檢索數據,每當數據庫中的數據發生變化,但我可以找到如何檢索數據,即使數據庫沒有變化。從android中的firebase數據庫檢索數據

例如: - 當用戶登錄到我的應用程序時,我想要檢索存儲在唯一ID節點下的數據。如果我需要,如何隨時從Firebase數據庫檢索數據?

+0

,只需創建所需火力路徑的參考對象。 Firebase ref =新的Firebase(路徑); –

回答

0

火力地堡的讀取和寫入數據庫參考線: https://firebase.google.com/docs/database/android/read-and-write

public class NavigationActivity extends AppCompatActivity{ 
private DatabaseReference mDatabase; 
    private FirebaseAuth mAuth; 
    private FirebaseAuth.AuthStateListener mAuthListener; 
@Override 
    protected void onStart() { 
     super.onStart(); 
     mAuth.addAuthStateListener(mAuthListener); 
    } 


@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

initializeAuthListener(); 

mDatabase = FirebaseDatabase.getInstance().getReference(); 



} 

private void initializeAuthListener() { 
     mAuth = FirebaseAuth.getInstance(); 
     mAuthListener = new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
       firebaseUser = firebaseAuth.getInstance().getCurrentUser(); 
       try { 
        if (firebaseAuth != null) { 
         loadUserDetails(); 
         Log.d("@@@@", "thread:signed_in:" + firebaseUser.getUid()); 
        } else { 
         Log.d("@@@@", "thread:signed_out"); 
         Intent login = new Intent(NavigationActivity.this, LoginActivity.class); 
         startActivity(login); 
         finish(); 
        } 
       }catch (Exception e){ 
        Intent login = new Intent(NavigationActivity.this, LoginActivity.class); 
        startActivity(login); 
        finish(); 
       } 

      } 
     }; 
     mAuth.addAuthStateListener(mAuthListener); 
    } 

private void loadUserDetails() { 
     DatabaseReference userReference = mDatabase 
       .child("users").child(firebaseUser.getUid()); 

//  displayUserDetails(userReference); 
     userReference.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       user = dataSnapshot.getValue(User.class); 

       tv_user_name.setText(user.getDisplayName()); 
       tv_user_email_nav.setText(user.getEmail()); 

       Glide.with(NavigationActivity.this) 
         .load(user.getPhotoUrl()) 
         .placeholder(R.mipmap.profile) 
         .centerCrop() 
         .dontAnimate() 
         .bitmapTransform(new CropCircleTransformation(NavigationActivity.this)) 
         .into(iv_user_image); 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
//    Toast.makeText(ThreadActivity.this, R.string.error_loading_user, Toast.LENGTH_SHORT).show(); 
//    finish(); 
      } 
     }); 
    } 
} 

https://stackoverflow.com/a/45328201/5973946

如果你想檢索火力數據
相關問題