2

Wenn ich eine Liste von Daten in eine AutoCompleteTextView in Android von Firebase laden möchte, wie soll ich das tun?Wie kann ich eine AutoCompleteTextView aus einer Liste von Firebase-Daten laden?

Wie ich es sich vorstellen:

ich die Daten bekommen etwas mit ähnlich einem FirebaseRecyclerAdapter, und legen Sie diesen Adapter an den ACTV. wenn ich diese Daten haben zum Beispiel:

AutoComplete:{ 
    JKDJKADJKADFJAKD:{ 
     name:"Hakuna Matata , your orangeness -- I mean your highness, Mr. Trump!" 
    } 
    JDKIKSLAIJDKDIKA:{ 
     name:"Hakuna Matata! I ask not to take offense by the previous statement." 
    } 
} 

Der ACTV beide Aussagen als Anregungen haben, wenn ich schreibe in „Hakuna Matata“. Gibt es dafür einen speziellen Firebase-Adapter?

+0

Sie werden den Code für diese selbst schreiben müssen. Firebase-Abfragen mit 'startAt' und' endAt' sind der wahrscheinlichste Weg. Siehe https://firebase.google.com/docs/database/android/retrieve-data#filtering_data –

+0

@FrankvanPuffelen, so dass startAt() alle Werte vom angegebenen Schlüssel abruft? –

+0

@FrankvanPuffelen kannst du mich mit einem Beispiel verlinken? –

Antwort

6

Nach 6 Stunden der Recherche, habe ich es schließlich dank this link getan.

Hier ist meine Datenbank: enter image description here Folgen Sie den Kommentaren in dem folgenden Code zu erreichen, was ich brauchte:

//Nothing special, create database reference. 
    DatabaseReference database = FirebaseDatabase.getInstance().getReference(); 
    //Create a new ArrayAdapter with your context and the simple layout for the dropdown menu provided by Android 
    final ArrayAdapter<String> autoComplete = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1); 
    //Child the root before all the push() keys are found and add a ValueEventListener() 
    database.child("AutoCompleteOptions").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      //Basically, this says "For each DataSnapshot *Data* in dataSnapshot, do what's inside the method. 
      for (DataSnapshot suggestionSnapshot : dataSnapshot.getChildren()){ 
       //Get the suggestion by childing the key of the string you want to get. 
       String suggestion = suggestionSnapshot.child("suggestion").getValue(String.class); 
       //Add the retrieved string to the list 
       autoComplete.add(suggestion); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
    AutoCompleteTextView ACTV= (AutoCompleteTextView)findViewById(R.id.actv); 
    ACTV.setAdapter(autoComplete); 
+0

Danke für die effiziente Lösung und Ihre Zeit. Du hast mich 6 Stunden gerettet! Wenn Sie auch die 'AutoCompleteOptionen' in Firebase aktualisieren, wollen Sie' autoComplete.clear(); 'direkt nach' public void onDataChange (DataSnapshot dataSnapshot) {... 'hinzufügen. Wenn der Listener erneut ausgelöst wird, werden die Ergebnisse einfach zum bereits gefüllten ArrayAdapter hinzugefügt und verdoppeln alle Einträge, die zuvor dem ArrayAdapter hinzugefügt wurden. –

+0

@ChristopherMills Sie sind herzlich willkommen! –

Verwandte Themen