我正在尝试在我的Firebase数据库中搜索并使用以下查询:orderByChild(“ childName”)。startAt(“ search_word”)。endAt(“ search_word” +“ \ uf8ff”);
但是我只是根据第一个单词而不是整个文本来得到结果。
示例: 在图片中,如果我搜索“简单”一词,我没有任何结果, 但是当我搜索这个词时,我得到正确的结果。
这是我的代码:
private void QuestionFeedSearch(String newText){
FirebaseRecyclerOptions<Question> options =
new FirebaseRecyclerOptions.Builder<Question>()
.setQuery(QuestionRef.orderByChild("body").startAt(newText).endAt(newText+"\uf8ff")
, Question.class).build();
FirebaseRecyclerAdapter<Question, QuestionViewHolder> firebaseRecyclerAdapter =
new FirebaseRecyclerAdapter<Question, QuestionViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull QuestionViewHolder holder, final int position, @NonNull Question model) {
final String QuestionKey;
QuestionKey = getRef(position).getKey();
holder.username.setText(model.getFullname());
holder.questionDate.setText(" " + model.getDate());
holder.questionTime.setText(" " + model.getTime());
holder.questionTitle.setText(model.getTitle());
holder.questionBody.setText(model.getBody());
holder.setLikeButtonStatus(QuestionKey);
//Picasso.get().load(model.getQuestionImage()).into(holder.questionimage);
Picasso.get().load(model.getQuestionImage()).fit().centerInside().into(holder.questionimage);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Toast.makeText(question_feed.this, chose_question_id, Toast.LENGTH_LONG).show();
Intent chosePostIntent = new Intent(question_feed.this, click_question_activity.class);
chosePostIntent.putExtra("chose_question_id", QuestionKey);
startActivity(chosePostIntent);
}
});
holder.commentQuestion.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent commentsIntent = new Intent(question_feed.this, CommentsActivity.class);
commentsIntent.putExtra("chose_question_id", QuestionKey);
startActivity(commentsIntent);
}
});
holder.likeQuesionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
likeChecker = true;
likesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (likeChecker.equals(true)) {
if (dataSnapshot.child(QuestionKey).hasChild(currentUserId)) {
likesRef.child(QuestionKey).child(currentUserId).removeValue();
likeChecker = false;
} else {
likesRef.child(QuestionKey).child(currentUserId).setValue(true);
likeChecker = false;
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
}
@NonNull
@Override
public QuestionViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.all_questions_layout, parent, false);
QuestionViewHolder viewHolder = new QuestionViewHolder(view);
return viewHolder;
}
};
questionList.setAdapter(firebaseRecyclerAdapter);
firebaseRecyclerAdapter.startListening();
}