如何使用 TextWatcher 实现 firebase 回收器?
How to implement firebase recycler using TextWatcher?
我在我的应用程序中实施了 Firebase 回收器。使用文本观察器时一切正常,但回收器视图在 onTextChanged
键盘向上时不会更新,并在我按下键盘向下时立即更新。
这是我的代码:
private TextWatcher textWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if(s.toString().trim().length()<1)
{
mRecyclerView.setVisibility(View.GONE);
}
else
{
mRecyclerView.setVisibility(View.VISIBLE);
firebaseSearch(s.toString());
}
Toast.makeText(ChooseUser.this,s.toString(),Toast.LENGTH_SHORT).show();
}
};
这是 firebase 回收器:
private void firebaseSearch(String searchText)
{
Query firebaseSearchQuery = databaseReference
.orderByChild("Name")
.startAt(searchText.toLowerCase())
.endAt(searchText.toLowerCase() + "\uf8ff");
FirebaseRecyclerOptions<Users> options =
new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(firebaseSearchQuery, snapshot ->
new Users(snapshot.child("Name").getValue().toString(),
snapshot.child("Image").getValue().toString(),
snapshot.getKey(),
snapshot.child("Profile").getValue().toString()
))
.build();
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(
options
) {
@Override
protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
holder.setDetails(getApplicationContext(), model.getName(), model.getImage());
}
@NonNull
@Override
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.search_list_items, parent, false);
return new UsersViewHolder(view);
}
};
firebaseRecyclerAdapter.startListening();
mRecyclerView.setAdapter(firebaseRecyclerAdapter);
}
我的代码有什么要更改的,以便在我输入单词时动态更新视图并在键盘启动时显示回收程序吗?
只是,我的代码中有 mRecyclerView.setHasFixedSize(true);
。
删除它使它起作用。
我在我的应用程序中实施了 Firebase 回收器。使用文本观察器时一切正常,但回收器视图在 onTextChanged
键盘向上时不会更新,并在我按下键盘向下时立即更新。
这是我的代码:
private TextWatcher textWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if(s.toString().trim().length()<1)
{
mRecyclerView.setVisibility(View.GONE);
}
else
{
mRecyclerView.setVisibility(View.VISIBLE);
firebaseSearch(s.toString());
}
Toast.makeText(ChooseUser.this,s.toString(),Toast.LENGTH_SHORT).show();
}
};
这是 firebase 回收器:
private void firebaseSearch(String searchText)
{
Query firebaseSearchQuery = databaseReference
.orderByChild("Name")
.startAt(searchText.toLowerCase())
.endAt(searchText.toLowerCase() + "\uf8ff");
FirebaseRecyclerOptions<Users> options =
new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(firebaseSearchQuery, snapshot ->
new Users(snapshot.child("Name").getValue().toString(),
snapshot.child("Image").getValue().toString(),
snapshot.getKey(),
snapshot.child("Profile").getValue().toString()
))
.build();
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(
options
) {
@Override
protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
holder.setDetails(getApplicationContext(), model.getName(), model.getImage());
}
@NonNull
@Override
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.search_list_items, parent, false);
return new UsersViewHolder(view);
}
};
firebaseRecyclerAdapter.startListening();
mRecyclerView.setAdapter(firebaseRecyclerAdapter);
}
我的代码有什么要更改的,以便在我输入单词时动态更新视图并在键盘启动时显示回收程序吗?
只是,我的代码中有 mRecyclerView.setHasFixedSize(true);
。
删除它使它起作用。