Да, я смог определить проблему в коде. Поскольку запрос чувствителен к регистру, список поиска не отображался. Я создал новое поле для хранения имени проекта в нижнем регистре. Затем я сделал запрос к новому полю. Исправленный код приведен ниже.
private void fbsearch (String searchText){
String pquery = searchText.toLowerCase();
Query sQuery = mDatabase.orderByChild("pnamelowcase").startAt(pquery).endAt(pquery + "\uf8ff");
FirebaseRecyclerOptions<project> options = new FirebaseRecyclerOptions.Builder<project>()
.setQuery(sQuery, project.class).setLifecycleOwner(this).build();
FBRA = new FirebaseRecyclerAdapter<project, ProjViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull ProjViewHolder holder, int position, @NonNull project model) {
String proj_key = getRef(position).getKey();
holder.prname.setText(model.getPname());
holder.prlocation.setText(model.getPlocation());
holder.prservice.setText(model.getPservice());
holder.prvalue.setText(model.getPvalue());
holder.practual.setText(model.getPactual());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent detactivity = new Intent(HomeActivity.this, InfoActivity.class);
detactivity.putExtra("ProjID", proj_key);
startActivity(detactivity);
}
});
}
@NonNull
@Override
public ProjViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.proj_row, parent, false);
// ProjViewHolder vh = new ProjViewHolder(view);
return new ProjViewHolder(view);
}
};
PList.setAdapter(FBRA);
}
То, что я заметил, что Запрос работает только с startAt и endAt Если я изменю на любой другие запросы, такие как equalTo , не работают.
Я также заметил еще одну проблему, заключающуюся в том, что обычный список не отображается после закрытия окна поиска. Если кто-то обнаружит проблему в моем коде, выделите ее и скажите, почему другие запросы не работают и как вернуть исходный список после закрытия окна поиска.