2013-02-06 27 views
0

我目前有一個列表視圖,在我的'onCreate'填充我有一個編輯文本,通過傳遞給我的'onTextChanged'方法的約束進行篩選,然後發送到在我的數據庫處理程序類中使用'getChanges'方法,並使用LIKE語句對其進行過濾。在我從編輯文本中刪除了字符串搜索的時候(即它是空白的),我想要重新顯示所有的內容。目前我無法做到這一點,顯示的數據只顯示最後過濾的數據。無法重置過濾後的列表視圖

這是我的篩選:

searchName = (EditText) findViewById(R.id.inputName); 
    searchedListResults.setTextFilterEnabled(true); 
    searchName.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void afterTextChanged(Editable s) { 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      cursorAdapter.getFilter().filter(s.toString()); 
     } 
    }); 

    getCons = new DBHandler(this, null, null); 
    cursorAdapter.setFilterQueryProvider(new FilterQueryProvider() { 
     public Cursor runQuery(CharSequence constraint) { 
      getCons.open(); 
      return getCons.getChanges(constraint.toString()); 
     } 
    }); 

這是我的數據庫處理程序類的方法,起初我還以爲是因爲我關閉遊標在我「如果」,但這個dosent似乎使一個區別。

public Cursor getChanges(String constraintPassed) { 

     String [] columns = new String[]{KEY_ROWID, KEY_NAME, KEY_TEL, KEY_EMAIL, KEY_COMMENTS}; 
     Cursor c = null; 
     if(constraintPassed == "" || constraintPassed.length() == 0) 
     { 
      c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, KEY_NAME + " ASC", null); 
      c.close(); 

     } 

     else 
     { 

      c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + " LIKE'" + constraintPassed + "%'", null, null, null, KEY_NAME + " ASC", null); 

     } 

     if(c != null) 
      { 
       c.moveToFirst(); 
       return c; 

      } 
     return null; 
    } 


    } 
+0

'constraintPassed ==「」'。 Java 101,字符串比較 – njzk2

+0

事實上,您正在關閉遊標肯定不會幫助 – njzk2

回答

0

你應該過濾後使用:

((EfficientAdapter)listview.getAdapter()).notifyDataSetChanged(); 

其中EfficientAdapter是您的適配器類。

希望這會爲你工作。

+0

錯誤和矯枉過正。 – njzk2

0

嘗試用

yourclassname.this.cursorAdapter.getFilter().filter(s.toString()); 

替換您的onTextChanged方法行

cursorAdapter.getFilter().filter(s.toString()); 

+0

沒有。如果這可以解決錯誤,則錯誤將是編譯錯誤,而不是運行時錯誤。 – njzk2