我有一个存储在 Firebase 中的标签列表。在我的片段之一中,MultiAutoCompleteTextView (MACTV) 允许用户选择相关标签。
目标,
- 是使用 Firebase 中的标签填充数组(用于 MACTV 的 ArrayAdapter)。
- 用户使用 OnItemClickListener 从 MACTV 选择相关标签后,需要将所选标签保存到 Firebase。
这是我尝试实施的方式。
为 MACTV 定义 ArrayAdapter:
ArrayAdapter<String> adapterMultiAutoComplete = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1);
使用 AddValueEventListener 填充 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*/}
});
}
MACTV的代码
MultiAutoCompleteTextView articleTags = (MultiAutoCompleteTextView) findViewById(R.id.mactv_tags);
articleTags.requestFocus();
articleTags.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
articleTags.setAdapter(adapterMultiAutoComplete);
将所选标签保存到 Firebase
List<String> ArticleTags = new ArrayList<>(Arrays.asList(articleTags.getText().toString().split(", ")));
DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("tags").setValue(ArticleTags);
阈值定义为 2。不幸的是,当我开始输入 MACTV 时,没有弹出相关标签。
我哪里做错了?