【发布时间】:2014-08-19 04:19:50
【问题描述】:
我正在开发一个离线存储数据库的字典应用程序。现在的问题是我正在使用自动完成文本视图来显示建议。当我输入建议时,应该加载。如果我不使用 AsyncTask,打字会变得非常慢并且会产生延迟。如果我使用 AsyncTask ,仍然需要花费太多时间从数据库加载建议。这意味着数据库搜索查询非常慢,并且不会快速显示结果。请帮助我,因为我已经坚持了很长时间。我的代码如下。提前致谢。
autoComplete.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(final CharSequence s, int start,
int before, int count) {
new AsyncTask<Void, Void, Void>() {
protected Void doInBackground(Void... params) {
results = db.getWords(s.toString());//arraylist
return null;
}
protected void onPostExecute(Void result) {
adapter.addAll(results);
}
}.execute();
}
@Override
public void beforeTextChanged(final CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
query.showDropDown();
}
我在onTextChanged() 做所有事情。这是我用于搜索结果的 sqlite 查询。"SELECT WORD FROM tblWords WHERE Word LIKE '%s%%' GROUP BY Word LIMIT 5"。请注意,数据库非常大。谢谢。
【问题讨论】:
-
只是好奇,你是在模拟器上还是在真正的安卓设备上测试这个?
-
只是好奇:你知道
you already have this project in your SDK samples folder吗?它被称为可搜索字典。版本 2 使用 db 而不是文本文件。 -
只是澄清一下:你得到的结果是准确的,唯一的问题是它太慢了?到底有多慢?
-
查看
[Eclipse installation path]\sdk\samples\android-19\legacy\SearchableDictionary(似乎与[Eclipse installation path]\sdk\samples\android-8\SearchableDictionary相同) -
... 在您添加
support library v4之前,该项目尚未完成(红色错误标记!),(可选?)将目标版本更改为 4.3(或 4.x,等等)和添加对app-compat-v7的依赖。准备好了,开始吧。
标签: android database sqlite dictionary android-asynctask