【发布时间】:2017-03-10 04:43:54
【问题描述】:
我有一个存储在 Firebase 中的标签列表。在我的一个片段中,MultiAutoCompleteTextView (MACTV) 允许用户选择相关标签。
目标,
- 是使用 来自 Firebase 的代码。
- 一旦用户使用 MACTV 从 MACTV 选择相关标签 OnItemClickListener,选中的Tags需要保存到 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 时,没有相关标签显示为弹出窗口。
我哪里做错了?
【问题讨论】:
-
在将项目添加到适配器后,只需在 onDataChange() 方法中添加这一行。 adapterMultiAutoComplete.notifyDataSetChanged();
-
相关(非重复)问题与答案stackoverflow.com/a/39715702/5593959
标签: android firebase firebase-realtime-database multiautocompletetextview