我想問一個小問題。我想知道哪些是我可以過濾從sqlite數據庫填充的列表視圖的最佳方式,我想根據用戶在編輯文本中輸入的字母來過濾它。我沒有顯示任何代碼,因爲我只有sqlite語句,就是這樣。我必須更改我用來填充數據庫的sqlite語句。Android篩選器列表視圖取決於edittext輸入與SQL語句
所以我的問題是,當用戶在編輯文本中輸入字母時,如何更改我的sqlite語句,以及如何使用新的sql語句過濾新數據來更新我的列表視圖。
我想問一個小問題。我想知道哪些是我可以過濾從sqlite數據庫填充的列表視圖的最佳方式,我想根據用戶在編輯文本中輸入的字母來過濾它。我沒有顯示任何代碼,因爲我只有sqlite語句,就是這樣。我必須更改我用來填充數據庫的sqlite語句。Android篩選器列表視圖取決於edittext輸入與SQL語句
所以我的問題是,當用戶在編輯文本中輸入字母時,如何更改我的sqlite語句,以及如何使用新的sql語句過濾新數據來更新我的列表視圖。
查看上一個問題的答案,它們非常相似:search bar
我有同樣的問題,解決它,如下所示:
//Search text and changed handler
EditText tbSearch = (EditText)findViewById(R.id.android_searchbox);
tbSearch.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void afterTextChanged(Editable s) {
ListView av = getListView();
SimpleCursorAdapter filterAdapter = (SimpleCursorAdapter)av.getAdapter();
filterAdapter.getFilter().filter(s.toString());
}
});
entries.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
return mDbHelper.fetchAllEntries(constraint);
}
});
通過這種方法,您將需要類似FetchAllEntries的方法(串sFilter)
/*
* Override to return a Cursor over the list of Entries filtered by a
* constraint
*
* @return Cursor over filtered Entries
*/
public Cursor fetchAllEntries(CharSequence constraint) {
if (constraint == null || constraint.length() == 0) {
// Return the full list
return fetchAllEntries();
} else {
String value = "%" + constraint.toString() + "%";
String[] columns = new String[] { KEY_ROWID, KEY_TITLE,
KEY_BODY, KEY_USER_PROFICIENCY };
return mDb.query(DATABASE_TABLE, columns,
KEY_TITLE + " like ? OR " + KEY_BODY + " like ? ", new String[] { value, value }, null, null,
KEY_TITLE + " ASC ");
}
}
在這裏,我有一個表兩列(標題,正文)
任何想法如何使這與BaseAdapter一起工作。由於我使用的適配器是延遲加載的實現,它擴展了BaseAdapter。 – 2012-01-13 16:09:49
嗯..對不起,我不知道有關適配器類型,但基於[我讀的](http://www.vogella.de/articles/AndroidListView/article.html),這是SimpleCursorAdapter創建的。直接使用數據庫.. – 2012-01-13 16:30:09