Firebase에 저장된 태그 목록이 있습니다. 내 단편 중 하나 인 MultiAutoCompleteTextView (MACTV)을 사용하면 사용자가 관련 태그를 선택할 수 있습니다.MultiAutoCompleteTextView 및 Firebase
목적,
- 는 중포 기지에서 태그를 사용하여 (MACTV위한 ArrayAdapter와에 사용) 배열을 채우는입니다.
- OnItemClickListener를 사용하여 MACTV에서 관련 태그를 선택하면 선택한 태그를 Firebase에 저장해야합니다.
다음은 구현 방법입니다.
MACTV의 ArrayAdapter와 정의 :
ArrayAdapter<String> adapterMultiAutoComplete = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1);
MultiAutoCompleteTextView articleTags = (MultiAutoCompleteTextView) findViewById(R.id.mactv_tags);
articleTags.requestFocus();
articleTags.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
articleTags.setAdapter(adapterMultiAutoComplete);
MACTV의 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을 사용하여
List<String> ArticleTags = new ArrayList<>(Arrays.asList(articleTags.getText().toString().split(", ")));
DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("tags").setValue(ArticleTags);
내가 MACTV에 입력을 시작하면 2. 불행히도 관련 태그 팝업으로 표시하지 않기 때문에 임계 값을 정의 중포 기지 선택된 태그를 저장
.
어디서 잘못 되었나요?
어댑터에 항목을 추가 한 후에이 행을 onDataChange() 메소드 내에 추가하면됩니다. adapterMultiAutoComplete.notifyDataSetChanged(); –
관련 항목 (중복 아님) 답변 포함 질문 http://stackoverflow.com/a/39715702/5593959 –