2017-11-09 1 views
0

Hallo Ich versuche, Daten aus Firebase-Datenbank zu suchen. Aber ich sehe keine Option für Suchdaten von Firebase. In meiner Firebase-Datenbank sind Adresse, Stadt und Handynummer vorhanden. Ich möchte Daten von diesem suchen, wenn ich die letzte Ziffer der Handynummer gebe. Ich möchte Ergebnis diese Handynummer bekommen.Suche Daten aus Firebase-Datenbank in Android

ist hier mein Code

floating_search_view_recruiter = (FloatingSearchView) findViewById(R.id.floating_search_view_recruiter); 
     floating_search_view_recruiter.setSearchHint("Search Recruiter.."); 
     floating_search_view_recruiter.attachNavigationDrawerToMenuButton(drawer); 
     floating_search_view_recruiter.setOnMenuItemClickListener(new FloatingSearchView.OnMenuItemClickListener() { 
      @Override 
      public void onActionMenuItemSelected(MenuItem item) { 
       int id = item.getItemId(); 
       if (id == R.id.action_filter) { 
        aleartDialogFilter(); 
       } 
      } 
     }); 

     fab_recyclerView.setVisibility(View.GONE); 
     floating_search_view_recruiter.setOnQueryChangeListener(new FloatingSearchView.OnQueryChangeListener() { 
      @Override 
      public void onSearchTextChanged(String oldQuery, String newQuery) { 
       //recruiterAdapter.getFilter().filter(newQuery); 
       mRef.orderByChild("city") 
         .startAt(newQuery) 
         .endAt(newQuery + "\uf8ff"); 

       mRef.child("city").addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 

        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) { 

        } 
       }); 
      } 
     }); 
+0

Feuerbasis Echtzeit-Datenbank für die Suche beschränkt ist, wenn Sie zu Fires tun es wechseln kann, Fires hat viele Funktionen von NoSql für komplexere Abfragen. –

+0

Wenn Sie weiterhin Echtzeit verwenden möchten, erlauben Sie dem Benutzer nur die Suche nach einem Feld zu einem Zeitpunkt, wobei die Option zur Verwendung eines Felds angegeben wird. –

Antwort

0

dieses Github-Repository weitere Beispiele vertretend für enter link description here

mDatabase = FirebaseDatabase.getInstance().getReference().child("appointment"); 

            Query query = mDatabase.orderByChild("patient").equalTo(restoredText.toString()); 

            query.addValueEventListener(new ValueEventListener() { 

                @Override 

                public void onDataChange(DataSnapshot dataSnapshot) { 


                    if (dataSnapshot != null || dataSnapshot.getChildrenCount() > 0) { 

                        collectPhoneNumbers((Map<String, Object>) dataSnapshot.getValue()); 

                    } 

                } 


                @Override 

                public void onCancelled(DatabaseError databaseError) { 

                    // Failed to read value 

                    Toast.makeText(getApplicationContext(), "Failed to read value." + databaseError.toException(), Toast.LENGTH_LONG).show(); 

                } 

            }); 


    private void collectPhoneNumbers(Map<String, Object> users) { 


        if (users != null && !users.isEmpty()) { 

            contacts.clear(); 

            contacts.add(new Appointment("<b>Date</b>", "<b>Time</b>", "<b>Doctor Name</b>", "<b>Patient Name</b>")); 

            //iterate through each user, ignoring their UID 

            for (Map.Entry<String, Object> entry : users.entrySet()) { 

                //Get user map 

                Map singleUser = (Map) entry.getValue(); 

                //Get phone field and append to list 

                String date = (String) singleUser.get("date"); 

                String time = (String) singleUser.get("time"); 

                String doctor = (String) singleUser.get("doctor"); 

                String patient = (String) singleUser.get("patient"); 

                contacts.add(new Appointment(date, time, doctor, patient)); 

// Toast.makeText(getApplicationContext(), "Date: " + date + ", Time:" + time + ", Doctor:" + doctor + ", Patient:" + patient, Toast.LENGTH_LONG).show(); 

                adapter.notifyDataSetChanged(); 

            } 

        } 

    }