I have a class which is returning a NullPoint Exception. What I don't get is that the variable in question has been instantiated already. I don't see why it is being returned as Null. The modelList has to be populated with the object model. This modelList is then my argument in the adapter class together with another Activity. This modelList consists of data values that have been picked from Firestore and should be retrieved in order to be displayed in a Recyclerview.
Java Class
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;
import java.util.List;
public class ViewRegisteredProperty extends AppCompatActivity {
RecyclerView recyclerView;
List<ModelOwnerPropertyList> modelList;
FirebaseFirestore db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_registered_property);
//instance of firebasefirestore
db = FirebaseFirestore.getInstance();
showData();
}
public void showData(){
db.collection("Companies")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for (QueryDocumentSnapshot document : task.getResult()) {
ModelOwnerPropertyList model = new ModelOwnerPropertyList(document.getString("Address"),
document.getString("CompanyName"),
document.getString("TotalTenants"),
document.getString("ownerName"));
modelList.add(model);
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getApplicationContext(), "No data collected", Toast.LENGTH_SHORT).show();
}
});
}
public void getData(){
db.collection("Companies")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
ModelOwnerPropertyList model = new ModelOwnerPropertyList(document.getString("Address"),
document.getString("CompanyName"),
document.getString("TotalTenants"),
document.getString("ownerName"));
modelList.add(model);
}
MyAdapter adapter = new MyAdapter(ViewRegisteredProperty.this ,modelList);
recyclerView.setAdapter(adapter);
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getApplicationContext(), "No data collected", Toast.LENGTH_SHORT).show();
}
});
}
}
StackTrace
02-21 17:06:33.215 28076-28076/com.example.rent E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.rent, PID: 28076
java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference
at com.example.rent.ViewRegisteredProperty$2.onComplete(ViewRegisteredProperty.java:57)
at com.google.android.gms.tasks.zzj.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:227)
at android.app.ActivityThread.main(ActivityThread.java:6102)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:961)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:822)