2017-02-19 272 views
3

我已經爲搜索有關如何在火力由vaule搜索,我不能有一個全面回答,所以我現在問...火力地堡的Android搜索查看由值

我用這個方法,我不能沒有得到正確的結果:

我需要通過「用戶名」進行搜索。

這裏是我的數據庫:

enter image description here

mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
       @Override 
       public boolean onQueryTextSubmit(String query) { 
        return false; 
       } 

       @Override 
       public boolean onQueryTextChange(String newText) { 

        mQuery = mDatabase.orderByChild("Username"); 


        return false; 
       } 
      }); 

同時,我已經使用:

mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
       @Override 
       public boolean onQueryTextSubmit(String query) { 
        return false; 
       } 

       @Override 
       public boolean onQueryTextChange(String newText) { 

        mQuery = mDatabase.orderByChild("Username").equalTo(newText) 


        return false; 
       } 
      }); 

,但我不能那麼任何人都可以給我完全正確的答案,請


非常感謝AtaerCaner幫助我,也感謝您盡力幫助我,但是我仍然沒有從搜索視圖得到任何結果,因此我將給出我的課程中的方法:

mDatabase.addChildEventListener(new ChildEventListener() { 
       @Override 
       public void onChildAdded(final DataSnapshot dataSnapshot, String s) { 
        mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
         @Override 
         public boolean onQueryTextSubmit(String query) { 

          String A = (String) dataSnapshot.child(Post_Key).child("Username").getValue(); 
          mQuery = mDatabase.orderByChild(A).equalTo(query); 


          return false; 
         } 

         @Override 
         public boolean onQueryTextChange(String newText) { 
          String A = (String) dataSnapshot.child(Post_Key).child("Username").getValue(); 
          mQuery = mDatabase.orderByChild(A).equalTo(newText); 
          return false; 
         } 
        }); 
       } 

所以請檢查方法,如果它的正確與否。

+0

你能plz幫助我,而使用FirebaseRecyclerAdapter如何應用搜索過濾器? –

回答

0

讓我以爲我在尋找邁克。首先,通過用戶名將所有用戶帶入mDatabase.child("Users").orderByChild("Username")。但我想要邁克的數據,所以我加了.equalTo("Mike")。這將返回一個查詢,正如我所說,然後設置一個.addListenerForSingleValueEvent來獲取Mike的數據。我想要的信息將作爲可回收的對象與此回調中的一個項目。然後將其轉換爲您的用戶模式。

mDatabase.child("Users").orderByChild("Username").equalTo("Mike").addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        User user = dataSnapshot.getChildren().iterator().next().getValue(User.class); 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 

至於我在你的代碼中看到你得到mQuery = mDatabase.orderByChild(A).equalTo(newText)查詢,但你不要用它做任何事情。

也許這個人可以幫助你 https://www.youtube.com/watch?v=3WTQZV5-roY

+0

我不明白,你能解釋更多,因爲我不知道在onChildAdded方法中做什麼.. – 7uthaifah

+0

你想要特定用戶的數據,對不對?在'onChildAdded'metod中,您正在查找的用戶的信息將作爲dataSnapshot返回給您。投它到你的模態,做你想做的事@ 7uthaifah – AtaerCaner

+0

我編輯了我的問題,所以檢查我做了什麼,如果方法是正確的小雞 – 7uthaifah