Reputation: 613
I'm trying to show the logged in user a welcome message based on their gender. If 'male', then setText("Hello Sir, your mail is: " + user.getEmail())
and for else, setText("Hello Madam, your mail is: " + user.getEmail())
. This is my databse structure:
This is the profile activity java that I'm working on:
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.support.v7.app.AppCompatActivity;
import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.firebase.client.ValueEventListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class ProfileActivity extends AppCompatActivity {
TextView textViewUserEmail;
private FirebaseDatabase mFirebaseDatabase;
private FirebaseAuth mAuth;
public DatabaseReference myRef;
public String userID;
@Override
protected void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
setContentView(R.layout.activity_profile);
mAuth = FirebaseAuth.getInstance();
Firebase.setAndroidContext(this);
mFirebaseDatabase = FirebaseDatabase.getInstance();
myRef = mFirebaseDatabase.getReference();
final FirebaseUser user = mAuth.getCurrentUser();
userID = user.getUid();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("UsersMale");
textViewUserEmail = (TextView) findViewById(R.id.textViewUserEmail);
loadUserInformation();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String myStrign = dataSnapshot.getValue(String.class);
if (user.isEmailVerified() && myStrign.equals("male")) {
textViewUserEmail.setText("Hello Sir, your mail is: " + user.getEmail());
} else {
textViewUserEmail.setText("Hello Madam, your mail is: " + user.getEmail());
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {}
});
}
}
}
The code is returning an error. Can you please suggest me what I'm doing wrong here? Thanks in advance.
Upvotes: 1
Views: 2463
Reputation: 80914
Change the database structure to this:
users
uniqueId
name: superman
gender: male
uniqueId
name: girl
gender: female
No need to have two parent nodes UserMale
and UserFemale
, just create one node call it users
and each user will have an attribute gender.
then do this:
FirebaseUser user = mAuth.getCurrentUser();
String userID = user.getUid();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users");
ref.child(userID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String gender=dataSnapshot.child("gender").getValue().toString();
if(gender.equals("male")) {
textViewUserEmail.setText("Hello Sir, your mail is: " + user.getEmail());
} else {
textViewUserEmail.setText("Hello Madam, your mail is: " + user.getEmail());
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {}
});
}
First retrieve the userid then put the location at users
, then attach a listener and retrieve the gender value of the logged in user.
Upvotes: 4