J'ai une liste d'étiquettes stockées dans Firebase. Dans l'un de mes Fragments, un MultiAutoCompleteTextView (MACTV) permet à l'utilisateur de sélectionner les tags pertinents.MultiAutoCompleteTextView et Firebase
L'objectif,
- est de peupler l'Array (utilisé dans ArrayAdapter pour MACTV) en utilisant les tags de Firebase.
- Une fois que l'utilisateur sélectionne les variables pertinentes de MACTV à l'aide de OnItemClickListener, les variables sélectionnées doivent être enregistrées dans Firebase.
Voici comment j'ai essayé d'implémenter.
Définition du ArrayAdapter pour MACTV:
ArrayAdapter<String> adapterMultiAutoComplete = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1);
Utilisation du AddValueEventListener pour alimenter le ArrayAdapter
if (fbUser != null) {
dbTags.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 tagNameSnapshot : dataSnapshot.getChildren()) {
//Get the suggestion by childing the key of the string you want to get.
String ValueTagName = tagNameSnapshot.child("tagName")).getValue(String.class);
//Add ValueTagName to ArrayAdapter
adapterMultiAutoComplete.add(ValueTagName);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {/*Do Nothing*/}
});
}
Code pour MACTV
MultiAutoCompleteTextView articleTags = (MultiAutoCompleteTextView) findViewById(R.id.mactv_tags);
articleTags.requestFocus();
articleTags.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
articleTags.setAdapter(adapterMultiAutoComplete);
Enregistrer les balises sélectionnées pour Firebase
List<String> ArticleTags = new ArrayList<>(Arrays.asList(articleTags.getText().toString().split(", ")));
DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("tags").setValue(ArticleTags);
La valeur seuil est définie comme 2. Malheureusement, aucune balise pertinentes apparaissent comme pop-up quand je commence à taper MACTV.
Où est-ce que je me suis trompé?
Ajoutez simplement cette ligne dans la méthode onDataChange() après avoir ajouté un élément à l'adaptateur. adapterMultiAutoComplete.notifyDataSetChanged(); –
Question connexe (pas en double) avec réponse http://stackoverflow.com/a/39715702/5593959 –