-2

Hello I'm having this error when calling adpater on onStart does anyone know how I can fix it? Thank you very much in advance. Every help is welcome. I've been trying to find a solution but all that I apply cause the same mistake. I do not know what else to do.

error on calling adapter.startListening(); in onStart.

error logcat:> Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.firebase.ui.database.FirebaseRecyclerAdapter.startListening()' on a null object reference

public class FindFriendsActivity extends AppCompatActivity
{
    FirebaseRecyclerAdapter<Contacts, FindFriendViewHolder> adapter;
    private Toolbar mToolbar;
    private RecyclerView FindFriendsRecyclerList;
    private DatabaseReference UsersRef;

    private SearchView searchView;
    private Query query;

    private FirebaseRecyclerOptions<Contacts> options;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_find_friends);


        UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");


        FindFriendsRecyclerList = (RecyclerView) findViewById(R.id.find_friends_recycler_list);
        FindFriendsRecyclerList.setLayoutManager(new LinearLayoutManager(this));


        mToolbar = (Toolbar) findViewById(R.id.find_friends_toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setTitle("Find Friends");
        searchView = findViewById(R.id.materialSearchPrincipal);


    }





    private void fetch(Query query) {

        FirebaseRecyclerOptions<Contacts > options =
                new FirebaseRecyclerOptions.Builder<Contacts>()
                        .setQuery(query, new SnapshotParser<Contacts>() {
                            @RequiresApi(api = Build.VERSION_CODES.KITKAT)
                            @NonNull
                            @Override
                            public Contacts parseSnapshot(@NonNull DataSnapshot snapshot) {
                                return new Contacts(Objects.requireNonNull(snapshot.child("name").getValue()).toString(),

                                        Objects.requireNonNull(snapshot.child("status").getValue()).toString());
                            }
                        })
                        .build();

        adapter = new FirebaseRecyclerAdapter<Contacts, FindFriendViewHolder>(options) {

            @Override
            protected void onBindViewHolder(@NonNull FindFriendViewHolder holder, final int position, @NonNull Contacts model)
            {
                holder.userName.setText(model.getName());
                holder.userStatus.setText(model.getStatus());
                Picasso.get().load(model.getImage()).placeholder(R.drawable.profile_image).into(holder.profileImage);


                holder.itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view)
                    {
                        String visit_user_id = getRef(position).getKey();

                        Intent profileIntent = new Intent(FindFriendsActivity.this, ProfileActivity.class);
                        profileIntent.putExtra("visit_user_id", visit_user_id);
                        startActivity(profileIntent);
                    }
                });

            }

            @NonNull
            @Override
            public FindFriendViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i)
            {
                View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.users_display_layout, viewGroup, false);
                FindFriendViewHolder viewHolder = new FindFriendViewHolder(view);
                return viewHolder;
            }

        };

        adapter.startListening();
        FindFriendsRecyclerList.setAdapter(adapter);
    }
    @Override
    protected void onStart()
    {
        super.onStart();
       adapter.startListening();
        UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");
        Query query =  FirebaseDatabase.getInstance().getReference().child("Users");

        fetch(query);

    }








    public static class FindFriendViewHolder extends RecyclerView.ViewHolder
    {
        TextView userName, userStatus;
        CircleImageView profileImage;


        public FindFriendViewHolder(@NonNull View itemView)
        {
            super(itemView);

            userName = itemView.findViewById(R.id.user_profile_name);
            userStatus = itemView.findViewById(R.id.user_status);
            profileImage = itemView.findViewById(R.id.users_profile_image);
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        super.onCreateOptionsMenu(menu);


        searchView.setOnQueryTextListener(new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {

                Query query = FirebaseDatabase.getInstance()
                        .getReference()
                        .child("Users").orderByChild("name").equalTo(s);

                if(s.equals("")){
                    query = FirebaseDatabase.getInstance()
                            .getReference()
                            .child("Users");
                }

                fetch(query);

                return false;
            }
        });

        return super.onCreateOptionsMenu(menu);
    }

}
a_local_nobody
  • 7,947
  • 5
  • 29
  • 51
Upz91
  • 141
  • 9

1 Answers1

0

Your adapter is initialized in the fetch function, but you call your fetch function after adapter.startListening(); in your onStart method

benjiii
  • 413
  • 3
  • 9