Android AutoCompleteTextView для URL-адресов

У меня проблема с Андроидом. Когда вы используете AutoCompleteTextView :

AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.entry);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.url_addresses);

String[] url_addresses = getResources().getStringArray(R.array.url_addresses);
for (String string : url_addresses) {
    adapter.add(string);
}

textView.setAdapter(adapter);
.....

И когда вы вводите ключевое слово «google» в текстовое поле, система автозаполнения показывает все URL-адреса, которые начинаются с «google». Например:

  • google.com
  • google.com.tr
  • google.co.uk

Но я хочу показать URL-адреса, содержащие «google». Например:

  • http://www.google.com/
  • https://mail.google.com/
  • http://another.google.com/

Я думаю, что эта проблема возникает, если элемент не содержит пробела (одно слово, например URL).

Возможно?

Большое спасибо.


person Mustafa Kirimli    schedule 17.09.2011    source источник


Ответы (2)


Это должно быть просто. Оберните строку URL-адреса в другой класс и в toString верните URL-адрес с точками, замененными пробелами. Например, URL-адрес http://mail.google.com будет возвращен как http://mail google com, который будет легко сопоставляться фильтром. Аналогичным образом можно заменить и другие символы перед возвратом строки, разделенной пробелами. Нравится //

class urlString {

   String url;
   public String toString() {
       return url.replace('.',' ');// replace dots with space
   }
}
person Ronnie    schedule 17.09.2011
comment
Спасибо за ответ. Это может быть хорошей идеей. Но список URL будет сложным. Если я внесу изменения в URL-адрес, список будет обновлен. - person Mustafa Kirimli; 17.09.2011

IIRC, напишите свой собственный адаптер вместо использования базового ArrayAdapter. См. Filter.performFiltering... Android AutoCompleteTextView с фильтрацией пользовательского адаптера не работает

person maxweber    schedule 14.05.2014