我正在制作一个字典应用程序,该数据库包含超过50k个单词。我使用AutoCompleteTextView
在用户搜索时显示单词。我认为加载所有数据并首先与AutoCompleteTextView
绑定将是一项艰巨的任务,所以我想到在按键事件发生时加载数据。
为每个按钮按下事件访问数据库也是一个坏主意,因为它很重,所以有没有最佳方法来执行此操作?由于应用程序大小很重要,我不喜欢使用Realm或任何其他数据库。
任何帮助将不胜感激
答案 0 :(得分:5)
您可以使用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
效果优化提示:
为列创建索引,并通过运行查询分析来避免扫描操作。扫描操作比搜索操作慢得多。
答案 1 :(得分:3)
的活动:
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);
答案 2 :(得分:3)
您可以在addTextChangedListener()的帮助下完成此操作。
您也可以参考this。