Почему я получаю исключение NullPointerException для setHasFixedSize (true) [я упоминал выделенный в коде] в Android Studio? - PullRequest
1 голос
/ 23 февраля 2020

Почему я получаю ошибку NullPointerException для setHasFixedSize (true)? Я не могу понять это: Мой код:

public class SearchFragment extends Fragment {

private RecyclerView recyclerView;
private UserAdapter userAdapter;
private List<User> mUsers;

EditText search_bar;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view= inflater.inflate(R.layout.fragment_search, container, false);

    recyclerView=view.findViewById(R.id.recycler_view);

   //Below line
   recyclerView.setHasFixedSize(true);///////////////////////////AT THIS LINE I AM GETTNG ERROR.WHY?
   //Upper line  

  recyclerView.setLayoutManager(new LinearLayoutManager((getContext())));

    search_bar=view.findViewById(R.id.search_bar);

    mUsers= new ArrayList<>();
    userAdapter = new UserAdapter(getContext(), mUsers);
    recyclerView.setAdapter(userAdapter);

    readUsers();
    search_bar.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                searchUsers(charSequence.toString().toLowerCase());
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });

    return view;

}

private void searchUsers(String s){
    Query query = FirebaseDatabase.getInstance().getReference("Users").orderByChild("username")
            .startAt(s)
            .endAt(s+"\uf8ff");

    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                mUsers.clear();
                for(DataSnapshot snapshot : dataSnapshot.getChildren()){
                    User user = snapshot.getValue(User.class);
                    mUsers.add(user);
                }

                userAdapter.notifyDataSetChanged();
            }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

private void readUsers(){

    DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(search_bar.getText().toString().equals("")){
                mUsers.clear();
                for(DataSnapshot snapshot: dataSnapshot.getChildren()){
                    User user = snapshot.getValue(User.class);
                    mUsers.add(user);
                }

                userAdapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

}

В этом фрагменте кода я пытаюсь понять, почему существует исключение NullPointerException, хотя я использовал метод findViewById для recyclerView переменная? Я сделал этот фрагмент для поиска других подписчиков и пользователей клона Instagram для приложения Instagram .... Но сейчас не могу найти, почему я получаю эту ошибку? AVD показывает это как фатальную ошибку NullPointerException в строке, показанной в коде. Пожалуйста, помогите мне понять, что является проблемой в этой строке метода setHasFixedSize (true) ??

...