I have an existing Firebase database with user child elements, these represent dog owners in my application.. I am wondering if it is possible to later add a new dog under each owner? Each dog would have its own details (breed, weight, gender etc).
I feel like I somewhat know what to do but just wanted to put my thoughts here in hopes of not going around in circles for the next week..
I assume I would potentially find the currentUser, create a new child(?), and set the new child value to Dogs? I am a little confused about the mAuth.createUserWithEmailAndPassword function.. I assume I wouldn't need this of course, is there an update option?
Lastly, do I need to create a new constructor for Dogs? or would I house the details under the existing User constructor? Very lastly, I have mostly spinners for this section, will this cause more issues?
I am still learning about all of this and greatly appreciate the help and advice. If I have missed anything that would help you, please let me know!
UPDATED - I have added below what I have now got thanks to help in the comments, still not showing any dog child in Firebase, and no errors in console:
AboutDog class (after AddNewDog):
public class AboutDog extends AppCompatActivity { String[] breeds = new String[]{"Breed", "Chihuahua", "Jack Russell", "Beagle", "Border Collie", "Great Dane"}; String[] ages = new String[]{"Age", "0-1yrs", "2-5yrs", "5-10yrs", "10-12yrs", "12-14yrs", "14+yrs"}; String[] weights = new String[]{"Weight (kg)", "< 5kg", "5-10kg", "10-25kg", "25-45kg", "45kg+"}; String[] gender = new String[]{"Gender", "Male", "Female"}; String[] neutered = new String[]{"Neutered", "Yes", "No"}; private EditText etName; Button nextPage; private ProgressBar progressBar; private Dog dog; DatabaseReference reference; String uid; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.about_dog); FirebaseAuth mAuth = FirebaseAuth.getInstance(); FirebaseUser currentUser = mAuth.getCurrentUser(); uid = currentUser.getUid(); reference = FirebaseDatabase.getInstance().getReference("user"); etName = (EditText) findViewById(R.id.name); Spinner breedDropdown = findViewById(R.id.breed); Spinner ageDropdown = findViewById(R.id.age); Spinner weightDropdown = findViewById(R.id.weight); Spinner genderDropdown = findViewById(R.id.gender); Spinner neuteredDropdown = findViewById(R.id.neutered); progressBar = (ProgressBar) findViewById(R.id.progressBar); ArrayAdapter<String> breedAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, breeds); breedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); breedDropdown.setAdapter(breedAdapter); ArrayAdapter<String> ageAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, ages); ageAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ageDropdown.setAdapter(ageAdapter); ArrayAdapter<String> weightAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, weights); weightAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); weightDropdown.setAdapter(weightAdapter); ArrayAdapter<String> genderAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, gender); genderAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); genderDropdown.setAdapter(genderAdapter); ArrayAdapter<String> neuteredAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, neutered); neuteredAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); neuteredDropdown.setAdapter(neuteredAdapter); nextPage = (Button)findViewById(R.id.nextButton); nextPage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = etName.getText().toString().trim(); String breed = breedDropdown.getSelectedItem().toString().trim(); String age = ageDropdown.getSelectedItem().toString().trim(); String weight = weightDropdown.getSelectedItem().toString().trim(); String gender = genderDropdown.getSelectedItem().toString().trim(); String neutered = neuteredDropdown.getSelectedItem().toString().trim(); if(name.isEmpty()) { etName.setError("Dog's name is required"); etName.requestFocus(); return; } if(breedDropdown.getSelectedItemPosition() == 0) { Toast.makeText(AboutDog.this, "Breed is required", Toast.LENGTH_LONG).show(); breedDropdown.requestFocus(); breedDropdown.requestFocusFromTouch(); breedDropdown.performClick(); return; } if(ageDropdown.getSelectedItemPosition() == 0) { Toast.makeText(AboutDog.this, "Age is required", Toast.LENGTH_LONG).show(); ageDropdown.requestFocus(); ageDropdown.requestFocusFromTouch(); ageDropdown.performClick(); return; } if(weightDropdown.getSelectedItemPosition() == 0) { Toast.makeText(AboutDog.this, "Weight is required", Toast.LENGTH_LONG).show(); weightDropdown.requestFocus(); weightDropdown.requestFocusFromTouch(); weightDropdown.performClick(); return; } if(genderDropdown.getSelectedItemPosition() == 0) { Toast.makeText(AboutDog.this, "Gender is required", Toast.LENGTH_LONG).show(); genderDropdown.requestFocus(); genderDropdown.requestFocusFromTouch(); genderDropdown.performClick(); return; } if(neuteredDropdown.getSelectedItemPosition() == 0) { Toast.makeText(AboutDog.this, "Neutered status is required", Toast.LENGTH_LONG).show(); neuteredDropdown.requestFocus(); neuteredDropdown.requestFocusFromTouch(); neuteredDropdown.performClick(); return; } dog = new Dog(name, breed, age, weight, gender, neutered); registerDog(name, breed, age, weight, gender, neutered); } }); } public void registerDog(String name, String breed, String weight, String age, String gender, String neutered) { progressBar.setVisibility(View.VISIBLE); reference.child(uid).child("dogs").setValue(dog) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()){ //successfully added dog information to owner Toast.makeText(AboutDog.this, "Successfully added dog information to Owner ", Toast.LENGTH_LONG).show(); } else { Log.w("TAG", "Failure - Dog not Created", task.getException()); Toast.makeText(AboutDog.this, "Dog not added, please try again..", Toast.LENGTH_LONG).show(); } } }); } } Dog constructor:
public class Dog { private String name, breed, age, weight, gender, neutered; public Dog() { } public Dog (String name, String breed, String age, String weight, String gender, String neutered) { this.name = name; this.breed = breed; this.age = age; this.weight = weight; this.gender = gender; this.neutered = neutered; } public String getName() { return name; } public String getBreed() { return breed; } public String getAge() { return age; } public String getWeight() { return weight; } public String getGender() { return gender; } public String getNeutered() { return neutered; } }