AutoCompleteTextView 需要花费大量时间在庞大的 Sqlite 数据库中进行搜索
AutoCompleteTextView is taking much time to search in huge Sqlite database
我有自己的字典应用程序 WordYard,每当我们输入 AutoCompleteTextView 时,我都会在下拉列表中显示单词列表。
在 autoCompleteTextView 的 addTextChangedListener 中,我正在查询 sqlite 数据库中的书面文本。由于数据库非常庞大,包含 1.5 个 lac 单词,因此制作特定文本的数组列表需要时间。
假设我写了'A',那么这个字符串将在数据库中搜索并写入从'A'开始的限制为15个数据的数组列表中。在滚动下拉列表时,我在适配器的 getView 中添加了接下来的 15 个单词。
滚动很好,但是每当我输入 autocompleteTextview 以从数据库中读取 15 个单词时,如果我们写得更快也需要时间。请告诉我是否有任何其他方法可以使我的应用程序更好。
每次您在 AutoCompleteTextView
中键入任何内容时,都会发送对您相对庞大的数据库的查询,从而导致(合理的)延迟。
addTextChangedListener (TextWatcher watcher);
方法需要一个TextWatcher
对象来操作。您要做的是创建一个 TextWatcher
并覆盖它的 afterTextChanged (Editable s)
方法以便对您的数据库执行查询 less often.You 还需要自定义 Filter
。
autoCompleteTextView.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
yourAdapter.getFilter().filter(s);
}
然后您将创建一个 class 来扩展 [Filter][1]
并覆盖适合您需要的方法。
例如,优化您的实施以仅在键入 4 个字符或经过一段时间后才发送查询。
我有自己的字典应用程序 WordYard,每当我们输入 AutoCompleteTextView 时,我都会在下拉列表中显示单词列表。
在 autoCompleteTextView 的 addTextChangedListener 中,我正在查询 sqlite 数据库中的书面文本。由于数据库非常庞大,包含 1.5 个 lac 单词,因此制作特定文本的数组列表需要时间。
假设我写了'A',那么这个字符串将在数据库中搜索并写入从'A'开始的限制为15个数据的数组列表中。在滚动下拉列表时,我在适配器的 getView 中添加了接下来的 15 个单词。
滚动很好,但是每当我输入 autocompleteTextview 以从数据库中读取 15 个单词时,如果我们写得更快也需要时间。请告诉我是否有任何其他方法可以使我的应用程序更好。
每次您在 AutoCompleteTextView
中键入任何内容时,都会发送对您相对庞大的数据库的查询,从而导致(合理的)延迟。
addTextChangedListener (TextWatcher watcher);
方法需要一个TextWatcher
对象来操作。您要做的是创建一个 TextWatcher
并覆盖它的 afterTextChanged (Editable s)
方法以便对您的数据库执行查询 less often.You 还需要自定义 Filter
。
autoCompleteTextView.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
yourAdapter.getFilter().filter(s);
}
然后您将创建一个 class 来扩展 [Filter][1]
并覆盖适合您需要的方法。
例如,优化您的实施以仅在键入 4 个字符或经过一段时间后才发送查询。