У меня есть AutoCompleteTextView
searchFriends
и String[] usernames= {"Lex","Lincoln","Luther"}
, которые я получаю из базы данных.AutoCompleteTextview не показывает выпадающее предложение для ввода первого символа
Проблема: В первый раз, когда я печатаю букву «L» в AutoCompleteTextView
, никаких предложений не отображается. Если я нажму backspace, чтобы удалить «L», а затем снова наберите «L», тогда будут предложены «Lex», «Lincoln» и «Luther». Я хочу, чтобы предложения показывались при первом вводе чего-либо.
public class SearchFriendsActivity extends AppCompatActivity {
Firebase userbase;
AutoCompleteTextView searchFriends;
ArrayAdapter adapter;
char firstChar;
String url, listOfusers, inputUsername, userss;
String[] usersArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_friends);
searchFriends= (AutoCompleteTextView)findViewById(R.id.searchFriends);
searchFriends.addTextChangedListener(new TextWatcher() {
private Timer timer = new Timer();
private final long DELAY = 1000; // milliseconds
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
timer.cancel();
timer = new Timer();
timer.schedule(
new TimerTask() {
@Override
public void run() {
((Activity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
if (s.length() == 0) {
firstChar = '.';
} else {
if (firstChar == s.charAt(0)) {
aVoid();
} else {
firstChar = s.charAt(0);
url = @string/databaseString + firstChar.toString() + "/";
userbase = new Firebase(url);
createArray();
}
}
}
});
}
},
DELAY
);
}
});
}
public void createArray() {
userbase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
listOfusers = dataSnapshot.getValue().toString();
userss = listOfusers.replaceAll("=.*?\\}", "").replace("{", "").replace("}", "").replace(", ", ",");
usersArray = userss.split(",");
aVoid();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
public void aVoid() {
adapter = new ArrayAdapter(this, R.layout.suggestion_dropdown_item, usersArray);
searchFriends.setThreshold(1);
searchFriends.setAdapter(adapter);
}
}
он говорит, что не может решить метод: фильтр –
Упс. Обновленный ответ. –
Я получаю эту ошибку nullpointer java.lang.NullPointerException: пытается вызвать виртуальный метод 'android.widget.Filter android.widget.ArrayAdapter.getFilter()' на ссылке нулевого объекта –