私は、人々が自分の位置を共有するのに役立つソーシャルアプリを開発しています。Android - (Firebase)ユーザー名を知らずにユーザー名でAutoCompleteTextViewを作成
私が経験してる問題は、私は私たちを推測する、これを行うことができるようにするために、他のユーザーProfile.Howeverを見つけるためにユーザーを助けるユーザー名とAutoCompleteTextViewを作成したいということですユーザーID
の子であるユーザーの名前に到達するためにユーザーIDを知っている必要がありますこれは私のFirebaseデータベースの構造画像
です私が試した方法は、私に役立たないユーザーIDの自動補完に役立ちます。
private void initialAutoCompleteTV() {
SearchPeopleAutoComp.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
{
//This is where I do the filtering as the user types
if (!TextUtils.isEmpty(charSequence.toString())) {
pullOutTagsSuggestions(charSequence.toString());
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
@SuppressWarnings("unchecked")
public void pullOutTagsSuggestions(final String text) {
final ArrayList<String> suggestions = new ArrayList<>();
Query tagsReferences = FirebaseDatabase.getInstance().getReference().child("Users").orderByKey().startAt(text).endAt((text)+ "\uf8ff");
tagsReferences.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.v("TAGTAGTAG",dataSnapshot.toString());
if (dataSnapshot != null) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = (String) ds.getKey();
suggestions.add(name);
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.select_dialog_item, suggestions);
SearchPeopleAutoComp.setAdapter(arrayAdapter);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
あなたonTextChnaged()
ユーザーがsubSequence()
と呼ばれる方法を使用することにより、リアルタイムで入力された文字を取得するには、問題を解決するために私を助けて事前のおかげで...
ログインしているユーザーのuidが必要ですか?これは正しいです? –
いいえ、そこに書いたように、AutoCompleteTextViewで書かれたユーザー名の名前をオートコンプリートしたいと考えています... – Tarlan