Проблемы с FirebaseRecylerAdapter - PullRequest
0 голосов
/ 08 мая 2020

Я хочу сделать поиск в реальном времени с FirebaseRecylerView и SearchView. Все работает нормально, но элементы в recylerview отображаются после скрытия клавиатуры или отправки. Я думаю, что проблема скрывается где-то в моем firebaseUiSearch (), но я понятия не имею, что с ними делать

OnCreate

public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        search = view.findViewById(R.id.search);
        names = view.findViewById(R.id.users);
        names.setLayoutManager(new LinearLayoutManager(getActivity()));
        names.setHasFixedSize(true);
        names.setNestedScrollingEnabled(false);
        firebaseUiSearch("");
        search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                firebaseUiSearch(newText);
                return false;
            }
        });
    }

firebaseUiSearch Function

private void firebaseUiSearch(String text) {
        Query query = userRef.orderByChild("name").startAt(text).endAt(text + "\uf8ff");

        FirebaseRecyclerOptions<UserList> options = new FirebaseRecyclerOptions.Builder<UserList>()
                .setQuery(query,UserList.class)
                .build();
        FirebaseRecyclerAdapter<UserList,UserViewHolder> adapter = new FirebaseRecyclerAdapter<UserList, UserViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull UserViewHolder userViewHolder, int i, @NonNull UserList userList) {

                userViewHolder.SetDetails(userList.getName(),userList.getAvatar());
            }

            @NonNull
            @Override
            public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.users_list, parent, false);
                return new UserViewHolder(v);
            }
        };
        adapter.startListening();
        names.setAdapter(adapter);
        adapter.notifyDataSetChanged();
    }

ViewHolder, если вы нужно

public class UserViewHolder extends RecyclerView.ViewHolder{
        View mView;
        public UserViewHolder(@NonNull View itemView) {
            super(itemView);
            mView = itemView;
        }
        public void SetDetails(String title,String avatar){
            TextView name = (TextView) mView.findViewById(R.id.name);
            CircularImageView circularImageView = (CircularImageView) mView.findViewById(R.id.avatar);
            name.setText(title);
            Picasso.get().load(avatar).into(circularImageView);
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...