Reputation: 31
In android i am trying to get only one key value in android means i am inserting my data to firebase there is on users array in firebase database in that i am inserting name and email as a key.I would like to retrieve the value for the key "name" in android. but when i am retriving data it will show me null value in name Here is my firebase database screen shot Here is my code
package joinus.joinus.com.firebasedata;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.firebase.database.ChildEventListener;
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;
public class MainActivity extends AppCompatActivity {
private DatabaseReference mDatabase;
private TextView txtDetails;
private EditText inputName, inputEmail;
private Button btnSave;
private FirebaseDatabase mFirebaseInstance;
private String userId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtDetails = (TextView) findViewById(R.id.txt_user);
inputName = (EditText) findViewById(R.id.name);
inputEmail = (EditText) findViewById(R.id.email);
btnSave = (Button) findViewById(R.id.btn_save);
mDatabase = FirebaseDatabase.getInstance().getReference();
mFirebaseInstance = FirebaseDatabase.getInstance();
// get reference to 'users' node
mDatabase = mFirebaseInstance.getReference("users");
// store app title to 'app_title' node
mFirebaseInstance.getReference("app_title").setValue("Realtime Database");
// app_title change listener
mFirebaseInstance.getReference("app_title").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String appTitle = dataSnapshot.getValue(String.class);
// update toolbar title
getSupportActionBar().setTitle(appTitle);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
}
});
addUserChangeListener();
// Save / update the user
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = inputName.getText().toString();
String email = inputEmail.getText().toString();
// Check for already existed userId
// if (TextUtils.isEmpty(userId)) {
createUser(name, email);
// }
}
});
}
private void createUser(String name, String email) {
userId = mDatabase.push().getKey();
Users user = new Users(name, email);
mDatabase.child(userId).setValue(user);
addUserChangeListener();
}
private void addUserChangeListener() {
// User data change listener
mDatabase.child("name").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// User user = dataSnapshot.getValue(User.class);
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
// easy
Users user = new Users();
String name = "" + dataSnapshot1.getValue(Users.class);
user.setName(name);
//String str = user.name;
Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show();
String value = dataSnapshot1.getValue(String.class);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
Upvotes: 0
Views: 552
Reputation: 1627
mDatabase.child("name").addValueEventListener(new ValueEventListener() {
That line is wrong Cause you Dont have Node Called "name"
if you wanne to get specific user name you have to use
mDatabase.child("users").child.(UID).child("name")addValueEventListener(new ValueEventListener() {
and if you looking for Specific Name you can use
mDatabase.child("user").orderby("/name").equal("YOUR_NAME_HERE").addValueEventListener(new ValueEventListener() {
Upvotes: 1