If I want to load a list of data into an AutoCompleteTextView
in android from Firebase, how will I do that?
How I'd imagine it:
I get the data using something similar to a FirebaseRecyclerAdapter
, and set that adapter to the ACTV. For example, if I have this data:
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."
}
}
The ACTV should have both statements as suggestions when I type in "Hakuna Matata". Is there any special Firebase adapter for this?
After 6 hours of research, I finally did it thanks to this link.
Here's my database:
Follow the comments in the following code to achieve what I needed:
//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);