在单独的线程中从服务获取 AutoCompleteTextView 建议
对于我的 AutoCompleteTextView,我需要从网络服务获取数据。由于这可能需要一点时间,我不希望 UI 线程没有响应,因此我需要以某种方式在单独的线程中获取数据。例如,从 SQLite DB 获取数据时,使用 CursorAdapter
方法 - runQueryOnBackgroundThread
非常容易完成。我正在寻找其他适配器,例如 ArrayAdapter、BaseAdapter,但找不到类似的东西......
有没有一种简单的方法可以实现这一点?我不能简单地直接使用 ArrayAdapter ,因为建议列表是动态的 - 我总是根据用户输入获取建议列表,因此无法预取和缓存它以供进一步使用...
如果有人可以给出一些关于这个主题的提示或例子 - 那就太好了!
For my AutoCompleteTextView
I need to fetch the data from a webservice. As it can take a little time I do not want UI thread to be not responsive, so I need somehow to fetch the data in a separate thread. For example, while fetching data from SQLite DB, it is very easy done with CursorAdapter
method - runQueryOnBackgroundThread
. I was looking around to other adapters like ArrayAdapter
, BaseAdapter
, but could not find anything similar...
Is there an easy way how to achieve this? I cannot simply use ArrayAdapter
directly, as the suggestions list is dynamic - I always fetch the suggestions list depending on user input, so it cannot be pre-fetched and cached for further use...
If someone could give some tips or examples on this topic - would be great!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
通过上述方法,我在快速打字时也遇到了这些问题。我猜这是因为结果的过滤是由过滤器类异步完成的,所以在过滤完成时修改 ui 线程中的 Adapter 的 ArrayList 时可能会出现问题。
http://developer.android.com/reference/android/widget/Filter。 html
但是,使用以下方法一切正常。
With the approach above, i also had those problems when typing very fast. I guess it´s because the filtering of the results is done asynchronously by the filter class, so there can be problems when modifying the ArrayList of the Adapter in the ui thread while filtering is done.
http://developer.android.com/reference/android/widget/Filter.html
However with following approach everything worked fine.
编辑:添加了简单的方法来避免单击建议时显示下拉列表。
我在我的应用程序中做了这样的事情:
EDITED: Added naive way to avoid the dropdown showing when you click a suggestion.
I do something like this in my app:
有相同的解决方案,除了问题是一切都很好(变量在我调试时更新)但是自动完成填充很奇怪,就像
我输入 sco 时它有结果但没有显示在列表中
但当我退格时,它显示 sco 的结果。在调试中,所有变量都会更新,这只会告诉我 UI 没有针对 AutoCompleteTextView 进行更新。当我退格时,它会被触发进行更新,然后它会显示较早的计算机列表(同时它会使用新搜索字符串的新列表项更新它)。
有人遇到这个问题吗?
had the same solution except that the problem is that everything is just fine ( variables are updated when i debug) but the autocomplete fills weirdly as in
when i type sco it has the results but does not show in list
but when i backspace it shows the result for sco. In debug all the variables are updated which only tells me that the UI is not getting updated for AutoCompleteTextView. as when i backspace it is triggered for update and then it shows earlier computer list then it(in the mean time it updates it with the new list items for new search string.
anyone ran into this problem?