简体   繁体   中英

Firebase android get Child from database

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) {

            }
        });
    }


}
    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() {

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM