2011-11-25 78 views
3

我的应用程序有一个列表视图来显示SQLite数据库中的值。在列表视图上有一个编辑文本用于在列表视图中搜索值。下面是我的一些代码:Android:如何提高列表视图搜索性能

public void onTextChanged(CharSequence s, int start, int before,int count) { 
      String sCondition = "C_Data like '%" + ed.getText() + "%'"; 
      Cursor data = database.query("tbl_Contents", fields, sCondition, null, null, null, "C_Data"); 
      dataSource = new SimpleCursorAdapter(items_list.this, R.layout.row, data, fields, new int[] { R.id.first}); 
      lv1.setAdapter(dataSource); 
     } 

我已经测试了它,它似乎工作得很好,但我很担心性能,因为这些代码需要在每次用户按下一个键时的数据库访问权限。

如果不使用显式搜索按钮,我该如何提高搜索性能?

+1

是否存在性能问题?如果没有,请保持独立,不要尝试过度优化 –

回答

0

我可以想到的一件事就是,填充listview填充列表(只需要填写字段)。所以你可以搜索列表而不是点击数据库。

0

另一个选项是启动每个按键与一个按键计数器连接的计时器。每进行N次击键或计时器关闭后,查询数据库查询函数就会被调用。另外,如果按下另一个按键时定时器已经运行,您只需重置延迟。如果您使用100毫秒的延迟时间,那么用户可能会感觉足够快,同时允许他们有足够的时间继续打字。搜索将在他们停止输入时执行。

像这样的东西会减少数据库查询的数量,同时仍然在用户输入时发出查询