我有一個存儲在Firebase中的標籤列表。在我的一個片段中,一個MultiAutoCompleteTextView(MACTV)讓用戶選擇相關的標籤。MultiAutoCompleteTextView和Firebase
目的,
- 是填充使用從火力地堡的 標籤的陣列(在ArrayAdapter用於MACTV)。
- 一旦用戶使用 OnItemClickListener從MACTV選擇相關標籤,所選標籤需要保存到 Firebase。
以下是我嘗試實施的方法。
定義一個ArrayAdapter爲MACTV:
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);
保存選中的標籤,火力
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(); –
相關(不重複)與回答問題http://stackoverflow.com/a/39715702/5593959 –