0

I am trying making an android app and I am facing this error:

java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference at com.example.sejal.newquichhelp.ListAllHelperActivity$1.onEvent(ListAllHelperActivity.java:79) at com.example.sejal.newquichhelp.ListAllHelperActivity$1.onEvent(ListAllHelperActivity.java:73) at com.google.firebase.firestore.zzi.onEvent(Unknown Source) at com.google.android.gms.internal.zzevc.zza(Unknown Source) at com.google.android.gms.internal.zzevd.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:836) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:232) at android.app.ActivityThread.main(ActivityThread.java:6661) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1106) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference

Here is my code:

ListAllActivity.java:

    public class ListAllHelperActivity extends AppCompatActivity {

        private RecyclerView mUsersListView;
        private List<Users> usersList;
        private FirebaseAuth mAuth;
        private  UsersRecyclerAdapter usersRecyclerAdapter;
        private FirebaseFirestore mFirestore;


        protected View onCreate(Bundle savedInstanceState,LayoutInflater inflater,ViewGroup container) {
            super.onCreate(savedInstanceState);
            usersList= new ArrayList<>();
            View view= inflater.inflate(R.layout.fragment_users, container, false);
            mUsersListView=(RecyclerView)view.findViewById(R.id.user_recycler);
            mFirestore=FirebaseFirestore.getInstance();

           // usersList= new ArrayList<>();

            usersRecyclerAdapter=new UsersRecyclerAdapter(container.getContext(),usersList);
            mUsersListView.setHasFixedSize(true);
            mUsersListView.setLayoutManager(new LinearLayoutManager(container.getContext()));
            mUsersListView.setAdapter(usersRecyclerAdapter);
            return view;
        }





        @Override
        public void onStart() {
            super.onStart();
            String user_id;
            mAuth=FirebaseAuth.getInstance();
            user_id=mAuth.getCurrentUser().getUid();
            mFirestore=FirebaseFirestore.getInstance();
           //String and=mFirestore.collection("Users").getId();
           //TextView t= (TextView)findViewById(R.id.user_list_name);
           //t.setText(and);
           mFirestore.collection("Users").addSnapshotListener(ListAllHelperActivity.this,new EventListener<QuerySnapshot>() {
                @Override
                public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
                    for (DocumentChange doc: documentSnapshots.getDocumentChanges()) {
                        if (doc.getType() == DocumentChange.Type.ADDED) {
                            Users users = doc.getDocument().toObject(Users.class);
                            usersList.add(users);
                            usersRecyclerAdapter.notifyDataSetChanged();
                        }
                    }
                }
            });
        }
    }

UsersRecyclerAdapter.java

public class UsersRecyclerAdapter extends 
RecyclerView.Adapter<UsersRecyclerAdapter.ViewHolder> {
    private List<Users> usersList;
    private Context context;

    public UsersRecyclerAdapter(Context context,List<Users>usersList)
    {
        this.usersList=usersList;

        this.context=context;
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.user_list_item,parent,false);


        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
                holder.user_name_view.setText(usersList.get(position).getName());
                CircleImageView user_image_view=holder.user_image_view;
                Glide.with(context).load(usersList.get(position).getImage()).into(user_image_view);

    }

    @Override
    public int getItemCount() {
        return usersList.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        private View mView;
        private CircleImageView user_image_view;
        private TextView user_name_view;


        public ViewHolder(View itemView) {
            super(itemView);
            mView=itemView;
            user_image_view=(CircleImageView)mView.findViewById(R.id.user_list_image);
            user_name_view=(TextView)mView.findViewById(R.id.user_list_name);

        }
    }
}

Please help me out with this issue. Thanks

1 Answers1

0

Uncomment

// usersList= new ArrayList<>();

theanilpaudel
  • 3,348
  • 8
  • 39
  • 67