I have a node in firebase database that I want to retrieve and put it in a spinner I made array list then looped through data snapshot but still give nullPointerException I stored the value of the child in firebase using push method
I tried everything but it didn't work
Model class
public class Purpose {
private String name;
public Purpose(){
}
public Purpose(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Add data class
puposedRef = FirebaseDatabase.getInstance().getReference().child("Purposes");
saveBtn = findViewById(R.id.add_purpose_save_btn);
saveBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = addNameEd.getText().toString();
Map<String , String> purposeMap = new HashMap<>();
purposeMap.put("name" , name);
puposedRef.push().setValue(purposeMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(AddPurposeActivity.this, "Added to database", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(AddPurposeActivity.this,
task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
});
Retrieve class
puposedRef = FirebaseDatabase.getInstance().getReference().child("Purposes");
textView = findViewById(R.id.show_purpose);
puposedRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
String key = puposedRef.push().getKey();
String name = ds.child(key).getValue(Purpose.class).getName();
textView.setText(name);
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
String key = puposedRef.push().getKey();
String name = ds.child(key).getValue(Purpose.class).getName();
textView.setText(name);
}
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
logcat
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.best.karem.mycareassociatesadmin.Model.Purpose.getName()' on a null object reference
at com.best.karem.mycareassociatesadmin.AddPurposeActivity$1.onChildAdded(AddPurposeActivity.java:52)