0

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)
nzioker
  • 35
  • 5

0 Answers0