2014-03-28 155 views
1

我正在嘗試過濾gridview,並且我正在編輯框中輸入數據。它的效果很好,除了當我在編輯框中插入空格字符時,它以某種方式無法識別它,並且結果集爲空。請幫助Textwatcher無法識別空間

這裏是我的編輯框聽衆:

search.addTextChangedListener(new TextWatcher(){ 

    @Override 
    public void afterTextChanged(Editable arg0) {} 

    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, 
      int arg2, int arg3) {} 

    @Override 
    public void onTextChanged(CharSequence cs, int start, int before, int count) { 

     MainActivity.this.adapter.getFilter().filter(cs); 

     } 

}); 

,因爲它的正常工作與其他人物,我不能找出問題。

+0

被onTextChanged叫什麼名字? – Hardik

+0

是它被稱爲當我在編輯框中 – Zonera

+0

輸入文本嘗試我的答案,你需要讓過濾器爲 – Hardik

回答

1

嘗試。希望它能爲你工作。我知道你需要修改這些代碼,但它可能會給你一些想法。

search.addTextChangedListener(new TextWatcher(){ 

    @Override 
    public void afterTextChanged(Editable arg0) { 
     // TODO Auto-generated method stub 

     MainActivity.this.adapter.getFilter().filter(search.getText().toString().trim()); 

    } 

    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, 
      int arg2, int arg3) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTextChanged(CharSequence cs, int start, int before, 
      int count) { 
     // TODO Auto-generated method stub 

     } 

}); 

如果這不起作用嘗試第二個選項

search.addTextChangedListener(new TextWatcher(){ 

    @Override 
    public void afterTextChanged(Editable arg0) { 
     String result = s.toString().replaceAll(" ", ""); 
    if (!s.toString().equals(result)) { 
     ed.setText(result); 
     ed.setSelection(result.length()); 
     // alert the user 
    } 

    } 

    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, 
      int arg2, int arg3) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTextChanged(CharSequence cs, int start, int before, 
      int count) { 


     } 

}); 

我喜歡用trim()字符串文本第一個選項。

+0

感謝您的幫助。有效。但現在它不承認空間之後的單詞。就像我把「打擊童工」一樣,它只承認戰鬥和後面的空間,但不承認兒童。 – Zonera

+0

嘗試添加maxlength到您的edittext.Its只是一個建議,可能不是完美的解決方案在你的情況。 –

+0

@Zonera你是如何解決你在上面評論中列出的問題? – KOTIOS

0

將您的過濾器代碼移動到afterTextChanged()方法。

例如:使用trim()

search.addTextChangedListener(new TextWatcher(){ 

    @Override 
    public void afterTextChanged(Editable arg0) { 
     // TODO Auto-generated method stub 

     MainActivity.this.adapter.getFilter().filter(search.getText().toString()); 

    } 

    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, 
      int arg2, int arg3) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTextChanged(CharSequence cs, int start, int before, 
      int count) { 
     // TODO Auto-generated method stub 

     } 

}); 
+0

還是返回上按下空格鍵 – Zonera

+0

你可以嘗試從TextView的直接 –

+0

獲取文本我已經更新了我的帖子 –