2016-03-07 3 views
0

Я недавно перешел на Firebase. Я прошел через Firebase Android api docs для извлечения данных из базы данных через JSON. существует метод onDataChange(DataSnapshot snapshot) для извлечения данных при каждом изменении данных в базе данных, но я могу найти, как извлекать данные, даже если в базе данных нет изменений.Извлечение данных из базы данных firebase в android

Например: когда пользователь регистрируется в моем приложении, я хочу, чтобы данные, которые хранятся под уникальным узлом идентификатора, должны быть восстановлены. Как я могу получить данные в любое время из базы данных Firebase, если я хочу?

+0

если вы хотите получить данные из firebase, просто создать эталонный объект нужного firebase пути. Firebase ref = новая Firebase (путь); –

ответ

2

От Firebase guide on reading data:

[метод onDataChange() это] срабатывает один раз с начальными данными и снова каждый раз, когда данные изменения.

Я настоятельно рекомендую вам прочитать Firebase guide for Android programming от конца до конца. Он ответит на многие вопросы, которые вы, вероятно, будете иметь при запуске Firebase.

0

Firebase чтения и записи базы данных Направляющие линии: 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

Смежные вопросы