2014-04-26 2 views
2

TextWatcherEditText이 지옥처럼 뒤떨어집니다. 몇 가지 점검을 한 후에는 UI와 관련된 작업을 수행 할 때마다이 작업을 수행하는 유일한 방법이 있습니다. UI와 관련되지 않은 다른 액션은 지연을 발생시키지 않습니다. ui를 업데이트하라는 메시지가 표시되면 TextWatcher가 느려집니다

내가 이해하지 못하는 것이어야하므로 매우 간단한 방법으로 생각 :

editText.addTextChangedListener(new TextWatcher() { 

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

    @Override 
    public void afterTextChanged(Editable arg) { 
     String text = arg.toString().trim(); 
     mTextView2.setText(" "+text +" "); 
     mTextView1.setText(" "+text +" "); 
    } 
}); 

은 무엇 지연의 원인이되는, 나는 지연을 제거하려면 어떻게해야합니까?

+0

어쩌면 afterTextChanged가 너무 빨리 호출되지 않기 때문에 beforeTextChanged 또는 onTextChanged를 시도해보십시오. –

+0

문제가 아니므로 시도해 보았습니다. 업데이트 속도가 문제가되지 않습니다. edittext에 걸린 지연은이 지연으로 정상적으로 쓰지 못하는 문제입니다. –

+0

afterTextChanged가 ALT OF TIMES 라 불리며, 무엇을하고 싶은지 정의하십시오. 아마도 다른 방법이있을 것입니다. 반드시 textwatcher를 사용해야하는 것은 아닙니다. –

답변

1

Editable 변수를 사용하여 원하는대로 변경해야합니다. 그게 전부입니다. String 작업은 Editable과 비교하여 매우 느립니다.

변경하기 전에 textChangedListener을 제거하고 변경 후에 다시 넣어야합니다. 그렇지 않으면 변경 후에 루프를 반복합니다.

관련 문제