2014-03-28 4 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

edittext에 최대 길이를 추가하십시오. 한 가지 제안만으로 귀하의 경우에는 완벽한 해결책이 아닐 수도 있습니다. –

+0

@ Zonera 위 ur 코멘트에 나열된 ur 문제를 어떻게 해결 했습니까? 최대 길이? – 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

내 게시물을 업데이트했습니다. –