在字母单击时填充 AutocompleteTextView

Fill AutocompleteTextView on letter click

我正在制作字典应用程序,数据库包含超过 50k words.I 我正在使用 AutoCompleteTextView 在用户搜索时显示单词。我认为一开始加载所有数据并与AutoCompleteTextView绑定将是一项艰巨的任务,所以我想到了在按键事件发生时加载数据。

为每个按钮按下事件访问数据库也是一个坏主意,因为它很重,那么有什么最佳方法可以做到这一点吗?。由于应用程序大小很重要,所以我不喜欢使用 Realm 或任何其他数据库。

任何帮助将不胜感激

您可以将 FilterQueryProvider 之类的过滤器与 LIKE % 命令一起使用,这将尝试更有效地匹配字符,而不是仅仅提取全部信息。

示例,

 // select query
        String sql = "";
        sql += "SELECT * FROM " + tableName;
        sql += " WHERE " + fieldObjectName + " LIKE '%" + searchTerm + "%'";
        sql += " ORDER BY " + fieldObjectId + " DESC";
        sql += " LIMIT 0,5";

来源:

Android AutocompleteTextView with Database

性能优化提示:

为您的列创建索引并通过运行 查询分析避免扫描操作。扫描操作比搜索操作慢得多。

来源:The SQLite Query Optimizer Overview

Activity:

AutoCompleteTextView text;
String[] languages= {"Android ","java","IOS","SQL","JDBC","Web services"};

text=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
ArrayAdapteradapter  = newArrayAdapter(this,android.R.layout.simple_list_item_1,languages);

text.setAdapter(adapter); 
text.setThreshold(1);

您可以在 addTextChangedListener() 的帮助下以很少的步骤完成此操作。

也可以参考this