2011-11-25 37 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毫秒的延遲時間,那麼用戶可能會感覺足夠快,同時允許他們有足夠的時間繼續打字。搜索將在他們停止輸入時執行。

像這樣的東西會減少數據庫查詢的數量,同時仍然在用戶輸入時發出查詢