2017-06-18 1 views
-1

Json CodeComment afficher le contenu de la base de données en utilisant l'instantané firebase

Database

 package com.example.durveshshah.feedback; 

     import android.app.ProgressDialog; 
     import android.content.Intent; 
     import android.support.annotation.NonNull; 
     import android.support.v7.app.AppCompatActivity; 
     import android.os.Bundle; 
    import android.util.Log; 
    import android.widget.ArrayAdapter; 
     import android.widget.EditText; 
     import android.widget.ListView; 
     import android.widget.Toast; 

     import com.firebase.client.Firebase; 
     import com.google.android.gms.tasks.OnCompleteListener; 
     import com.google.android.gms.tasks.Task; 
     import com.google.firebase.auth.AuthResult; 
     import com.google.firebase.auth.FirebaseAuth; 
     import com.google.firebase.auth.FirebaseUser; 
     import com.google.firebase.database.DataSnapshot; 
     import com.google.firebase.database.DatabaseError; 
     import com.google.firebase.database.DatabaseReference; 
     import com.google.firebase.database.FirebaseDatabase; 
     import com.google.firebase.database.ValueEventListener; 

     import java.util.ArrayList; 

     public class Main4Activity extends AppCompatActivity { 

    private static final String TAG = "viewDatabase"; 
    private DatabaseReference mRef; 
    private FirebaseDatabase mFirebaseDatabase; 
    private FirebaseAuth mAuth; 
    private FirebaseAuth.AuthStateListener mAuthListener; 
    private String UserId; 
    private ListView mListView; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main4); 

    mListView = (ListView) findViewById(R.id.list); 
    mAuth = FirebaseAuth.getInstance(); 
    mFirebaseDatabase = FirebaseDatabase.getInstance(); 
    mRef = mFirebaseDatabase.getReference(); 
    final FirebaseUser user = mAuth.getCurrentUser(); 
    UserId = user.getUid(); 

    mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if(user!=null) 
      { 
       //User is signed in 
       Log.d(TAG,"onAuthStateChanged:signed_in:"+ user.getUid()); 
       Log.d(TAG,"onAuthStateChanged:signed_in:"+ user.getEmail()); 
      } 
      else 
      { 
       //User is signed out 
       Log.d(TAG,"onAuthStateChanged:signed_out"); 
      } 
     } 
    }; 


    mRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot ds : dataSnapshot.getChildren()) { 


        //Log.i("phone",ds.getKey()); 
        ArrayList<String> array = new ArrayList<>(); 
        array.add(String.valueOf(ds.getValue())); 

        ArrayAdapter arrayAdapter = new ArrayAdapter(Main4Activity.this, android.R.layout.simple_list_item_1, array); 
        mListView.setAdapter(arrayAdapter); 


      } 
     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) 
     { 
      Toast.makeText(Main4Activity.this,"Logged Out",Toast.LENGTH_SHORT).show(); 
     } 
    }); 



     } 


    } 

J'ai utilisé signinwithemailandpassword mécanisme intégré firebase dans une activité différente et après la signature dans Je veux voir le contenu de cet utilisateur particulier . Au lieu de cela, tous les contenus de la base de données sont visibles dans chaque utilisateur auquel je me connecte.

+0

Veuillez ajouter votre structure de base de données Firebase et les données que vous voulez récupérer. –

+0

Ceci est la seule structure –

+0

Je veux afficher les données de cette activité –

Répondre

0

Pour ce faire, vous devez créer un nouveau noeud nommé users. Chaque fois qu'un utilisateur se connecte, vous pouvez obtenir le uid. Votre base de données devrait ressembler à ceci:

Firebase-root 
    | 
    ---- users 
      | 
      ---- uid1 
      |  | 
      |  // details 
      | 
      ---- uid2 
      |  | 
      |  // details 
      | 
      ---- //and so on 

En supposant que votre noeud de téléphone est niché sous le uid, vous pouvez utiliser le code suivant:

DatabaseReference yourRef = FirebaseDatabase.getInstance().getReference().child("users").child(user.getUid()).child("phone"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String phone = ds.getValue(String.class); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
yourRef.addListenerForSingleValueEvent(eventListener); 

Hope it helps.

+0

Merci beaucoup Alex. Avez-quelques modifications avec l'aide de votre code et l'a finalement obtenu –

+0

Appréciez-le. Merci –

+0

Est-ce que tout va bien? –