这是我的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变量。
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()方法更新现有的适配器。
添加回答
举报
0/150
提交
取消
