2012-01-13 23 views
0

我想問一個小問題。我想知道哪些是我可以過濾從sqlite數據庫填充的列表視圖的最佳方式,我想根據用戶在編輯文本中輸入的字母來過濾它。我沒有顯示任何代碼,因爲我只有sqlite語句,就是這樣。我必須更改我用來填充數據庫的sqlite語句。Android篩選器列表視圖取決於edittext輸入與SQL語句

所以我的問題是,當用戶在編輯文本中輸入字母時,如何更改我的sqlite語句,以及如何使用新的sql語句過濾新數據來更新我的列表視圖。

回答

0

查看上一個問題的答案,它們非常相似:search bar

0

我有同樣的問題,解決它,如下所示:

//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 "); 

    } 
} 

在這裏,我有一個表兩列(標題,正文)

+0

任何想法如何使這與BaseAdapter一起工作。由於我使用的適配器是延遲加載的實現,它擴展了BaseAdapter。 – 2012-01-13 16:09:49

+0

嗯..對不起,我不知道有關適配器類型,但基於[我讀的](http://www.vogella.de/articles/AndroidListView/article.html),這是SimpleCursorAdapter創建的。直接使用數據庫.. – 2012-01-13 16:30:09