【问题标题】:AutoCompleteTextView is taking much time to search in huge Sqlite databaseAutoCompleteTextView 花费大量时间在庞大的 Sqlite 数据库中进行搜索
【发布时间】:2015-03-02 10:45:09
【问题描述】:

我有自己的字典应用程序 WordYard,每当我们输入 AutoCompleteTextView 时,我都会在下拉列表中显示单词列表。

在 autoCompleteTextView 的 addTextChangedListener 中,我正在查询 sqlite 数据库中的书面文本。由于数据库非常庞大,包含 1.5 个 lac 单词,因此创建特定文本的数组列表需要时间。

假设我写了“A”,那么这个字符串将在数据库中搜索并写入从“A”开始的限制 15 个数据的数组列表中。在滚动下拉列表时,我在适配器的 getView 中添加了接下来的 15 个单词。

滚动很好,但每当我输入 autocompleteTextview 以从数据库中读取 15 个单词时,如果我们写得更快,也需要时间。请告诉我是否有任何其他方法可以让我的应用程序变得更好。

【问题讨论】:

标签: android performance sqlite autocompletetextview custom-adapter


【解决方案1】:

每次您在 AutoCompleteTextView 中键入任何内容时,都会向您相对庞大的数据库发送查询,从而导致(合理的)延迟。

addTextChangedListener (TextWatcher watcher); 方法需要一个TextWatcher 对象来操作。您要做的是创建一个TextWatcher 并覆盖它的afterTextChanged (Editable s) 方法,以减少对数据库执行查询的频率。为此,您还需要一个自定义Filter

autoCompleteTextView.addTextChangedListener(new TextWatcher() {
   public void onTextChanged(CharSequence s, int start, int before, int count) {
      yourAdapter.getFilter().filter(s);
   }

然后您将创建一个扩展 [Filter][1] 的类并覆盖适合您需要的方法。

例如,优化您的实现以仅在输入 4 个字符或经过一段时间后发送查询。

【讨论】:

  • 谢谢,您是否可以为自定义过滤器编写示例代码
猜你喜欢
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 2016-07-20
  • 2010-11-03
  • 1970-01-01
相关资源
最近更新 更多