У меня есть текстовое представление автозаполнения в моей активности Android, в котором результаты получаются путем передачи строкового массива в адаптере массива. Строковый массив arraylist содержит элементы в следующем формате:
city-name-country(code)
например, одна запись в массиве строк выглядит так:
Cochin-Kochi International Airport-India(COK)
Когда я начинаю вводить символы, он начинает показывать мне результаты из массива строк на основе city
, но если мне нужно получить результаты на основе code
, т.е. cok
, какие изменения я должен внести в код? Я имею в виду, что пользователь должен получать результаты, даже когда он набирает город или код. В моем случае, когда я набираю cok
В моем случае в текстовом представлении автозаполнения не отображаются результаты. Но на самом деле есть одна запись, соответствующая иероглифам cok, т.е. международный аэропорт Кочи. Но я не могу получить этот результат. Может кто-нибудь, пожалуйста, помогите мне... Это код моего автозаполнения текста:
actv1=(AutoCompleteTextView)rootView.findViewById(R.id.autoCompleteTextView1);
loc=SplashScreen.loc;//obtained from a static arraylist in another activity.
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,loc);
actv1.setAdapter(adapter);
РЕДАКТИРОВАТЬ:
Я добавил следующий код в свою программу, и проблема в том, что когда я набираю COK
, результат Cochin-Kochi International Airport-India(COK)
просто мигает менее 1 секунды, как это предлагается в текстовом представлении автозаполнения, а после этого он исчезает. Предложение отображается менее 1 секунды и ничего не отображает в текстовом представлении автозаполнения. Какова возможная ошибка в коде, который я реализовал?
actv1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
String filter = s.toString().toLowerCase();
listItems = new ArrayList<String>();
for (String listItem : loc) {
if (listItem.toLowerCase().contains(filter))
{
listItems.add(listItem);
}
}
if (listItems.size() < 1){
Toast toast = Toast.makeText(getActivity().getApplicationContext(),
"No entries contain your search parameters",
Toast.LENGTH_SHORT);
toast.show();
}
ArrayAdapter<String> adapt=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,listItems);
actv1.setAdapter(adapt);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
getFilter()
performFiltering()
. Вот пример: gist.github.com/tobiasschuerg/3554252 - person Simon Marquis   schedule 23.08.2014addTextChangedListener
, используйте метод фильтрации, описанный ранее. - person Simon Marquis   schedule 25.08.2014