2016-03-07 123 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

如果你想检索火力数据
相关问题