Я хочу сделать поиск в реальном времени с 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);
}
}