2017-06-12 109 views
0

我想顯示所有結果,其中字段「userGood」結尾爲「true」。我使用FirebaseListAdapter中的下一個代碼。Firebase endAt()方法不適用於FirebaseListAdapter

FirebaseListAdapter<User> firebaseSuccessfulTaskListAdapter = new FirebaseListAdapter<User>(
       this, User.class, 
       R.layout.item_user, 
       FirebaseDatabase.getInstance().getReference() 
         .child("users").orderByChild("userGood").endAt("true")){ 

     @Override 
     protected void populateView(View v, Task model, int position) { } 
}; 

數據結構:

{ 
    "users": { 
     "1": { 
      "name": "bob", 
      "userGood": "bob_true" 
     }, 
     "2": { 
      "name": "max", 
      "userGood": "max_false" 
     }, 
     "3": { 
      "name": "mike", 
      "userGood": "mike_true" 
     }, 
     "4": { 
      "name": "bob", 
      "userGood": "bob_false" 
     } 
     } 
    } 

當我使用此代碼,他們顯示我與我的數據庫中的所有數據。你能幫我解決嗎?謝謝!

回答

3

The functionendAt而不是endWith。您按字母順序獲得了「真實」之前的所有內容。 Firebase API不支持部分文字匹配。查看第三方文本搜索解決方案,如ElasticSearch/Flashlight,或者重構您的數據模型,以便可以使用內置函數進行查詢。例如,爲什麼不能userGood只是布爾truefalse

+0

這是很好的答案,謝謝,特拉維斯! – Tomas