在信函点击上填写AutocompleteTextView

时间:2015-07-06 04:25:46

标签: android sqlite keypress autocompletetextview

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

为每个按钮按下事件访问数据库也是一个坏主意,因为它很重,所以有没有最佳方法来执行此操作?由于应用程序大小很重要,我不喜欢使用Realm或任何其他数据库。

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:5)

您可以使用FilterQueryProviderLIKE %命令之类的过滤器来尝试更有效地匹配字符,而不仅仅是提取整个信息。

实施例,

 // 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

答案 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