我想定期更改AutoCompleteTextView提供的建议,通过从RESTful Web服务获取列表,但是无法使其顺畅运行。我设置了一个硬编码的建议列表来确保它能正常工作:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, new String[] {"Hi", "Ho"});
speciesName.setAdapter(adapter);//my autocomplete tv
我在TextView上设置了一个TextWatcher,当文本发生变化时,它会调用一个非阻塞的方法去获取一个新的建议列表 -- 这个获取新列表的部分已经正常工作。然后我想重置适配器,就像这样:
public void setOptionsAndUpdate(String[] options) {
Log.d(TAG, "setting options");
//speciesName.setAdapter((ArrayAdapter<String>)null);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, options);
speciesName.setAdapter(adapter);
}
这个方法被调用了,但是不起作用--建议列表要么消失了,要么显示的建议没有改变,尽管调用了setAdapter
方法。
这种方法是否正确?我看了一下SimpleCursorAdapter
,但是不知道如何将我的 Web 服务注册为内容提供者。(它的格式类似于http://www.blah.com/query?term=XX,其中XX是来自我的应用程序的输入,并且响应是一个字符串的JSON数组。)