为了账号安全,请及时绑定邮箱和手机立即绑定

FirebaseUI RecycleView 搜索不起作用

FirebaseUI RecycleView 搜索不起作用

开心每一天1111 2022-06-04 16:41:50
这是我的SearchGetterSetter.java代码:package com.me.Admin;public class SearchGetterSetter {String fname;public SearchGetterSetter(String fname) {    this.fname = fname;}public String getFname() {    return fname;}public void setFname(String fname) {    this.fname = fname;}}这是我的 SearchUserActivity.java 代码package com.me.Admin;  import android.support.annotation.NonNull;  import android.support.v7.app.AppCompatActivity;  import android.os.Bundle;  import android.support.v7.widget.LinearLayoutManager;  import android.support.v7.widget.RecyclerView;  import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup;  import android.widget.EditText;  import android.widget.ImageButton;  import android.widget.TextView;  import android.widget.Toast;  import com.firebase.ui.database.FirebaseRecyclerAdapter;  import com.firebase.ui.database.FirebaseRecyclerOptions;  import com.google.firebase.FirebaseException;  import com.google.firebase.database.DatabaseReference;  import com.google.firebase.database.FirebaseDatabase;  import com.google.firebase.database.Query;  import com.infoters.killansfitnessstudio.R;  public class SearchUserActivity extends AppCompatActivity {private EditText SearchTxt;private ImageButton SearchBtn;private RecyclerView SearchRV;private DatabaseReference mUserDatabase;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_search_user);    mUserDatabase = FirebaseDatabase.getInstance().getReference("users");    SearchTxt = findViewById(R.id.SearchUserTxt);    SearchBtn = findViewById(R.id.SearchUserBtn);    SearchRV = findViewById(R.id.SearchUserRV);    SearchRV.setHasFixedSize(true);    SearchRV.setLayoutManager(new LinearLayoutManager(this));        }    });}我想从 Firebase 实时数据库中搜索 fname。在搜索按钮上按下我正在调用firebaseUserSearch()方法。我尝试了几种方法,但对我没有任何作用。我猜我做错了 FirebaseRecycleViewAdapter。我提到了这个。我哪里出错了?
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

你的这个声明:

Query firebaseSearchQuery = mUserDatabase.child("fname");

应该

Query firebaseSearchQuery = mUserDatabase.orderByChild("fname").equals(searchText);

正如我看到您的代码,您没有在查询中使用searchText变量。


查看完整回答
反对 回复 2022-06-04
?
MMTTMM

TA贡献1869条经验 获得超4个赞

要创建搜索功能,您需要创建一个如下所示的查询:


DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

DatabaseReference usersRef = rootRef.child("users");

Query query = usersRef.orderByChild("fname").equalTo(searchedText);

因此,每次搜索名称时,都应该返回一个新的查询对象。因此,每次您想要过滤新条件时,您都需要:


根据新搜索的文本创建一个新查询:


Query query = usersRef.orderByChild("name").equalTo(searchedText);

将侦听器附加到这个新创建的查询。


使用这个新创建的查询的结果创建一个新的适配器,或者使用notifydatasetchanged()方法更新现有的适配器。


查看完整回答
反对 回复 2022-06-04
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号