Firebaseに格納されたタグのリストがあります。私の断片の一つでは、MultiAutoCompleteTextView(MACTV)は、ユーザに関連するタグを選択させる。MultiAutoCompleteTextViewとFirebase
目的、
- がFirebaseから タグを使用して(MACTVためArrayAdapterで使用される)配列を移入することです。
- OnItemClickListenerを使用してMACTVから関連するタグを選択すると、選択したタグを Firebaseに保存する必要があります。
ここでは実装方法を説明します。 MACTV
MultiAutoCompleteTextView articleTags = (MultiAutoCompleteTextView) findViewById(R.id.mactv_tags);
articleTags.requestFocus();
articleTags.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
articleTags.setAdapter(adapterMultiAutoComplete);
ため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*/}
});
}
コードを移入するAddValueEventListenerを使用し
ArrayAdapter<String> adapterMultiAutoComplete = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1);
:MACTVためArrayAdapterを定義
保存Firebaseする選択したタグ閾値は残念ながら2のように定義されて
List<String> ArticleTags = new ArrayList<>(Arrays.asList(articleTags.getText().toString().split(", ")));
DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("tags").setValue(ArticleTags);
私はMACTVに入力を開始する場合、該当のタグがポップアップとして表示されません。私は間違って行くのです
?
アダプタに項目を追加した後に、この行をonDataChange()メソッドの中に追加するだけです。 adapterMultiAutoComplete.notifyDataSetChanged(); –
関連する(重複しない)answer with answer http://stackoverflow.com/a/39715702/5593959 –