這是我的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
提交
取消
