Динамическое обновление адаптера AutoCompleteTextView

Я хочу периодически изменять предложения, выдаваемые AutoCompleteTextview, получая список из веб-службы RESTful, и не могу заставить его работать плавно. Я создал жестко запрограммированный список предложений, чтобы убедиться, что он работает:

ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_item, new String[] {"Hi", "Ho"});
speciesName.setAdapter(adapter);//my autocomplete tv

У меня есть TextWatcher в текстовом представлении, и когда текст изменяется, запускается неблокирующий вызов для получения нового списка предложений - эта часть который получает новый список, работает нормально.Затем я хочу сбросить адаптер, например:

public void setOptionsAndUpdate(String[] options) {
    Log.d(TAG, "setting options");
    //speciesName.setAdapter((ArrayAdapter)null);
    ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_item, options);
    speciesName.setAdapter(adapter);
}

Этот метод вызывается, но не работает - список предложений либо исчезает, либо отображаемые предложения остаются неизменными, несмотря на вызов setAdapter .

Это вообще правильный подход? Я просмотрел SimpleCursorAdapter , но не смог понять, как зарегистрировать свою веб-службу в качестве поставщика содержимого. (Он имеет форму http://www.blah.com/query?term=XX , где XX - это ввод из моего приложения, а ответ - это массив строк JSON.)

37
задан Jonik 29 April 2015 в 15:41
поделиться