2016-08-29 14 views
0

TextWatcherを使用して、EditTextのすべての文字をリアルタイムで受信しています。EditTextテキストと特定のStringを比較したいと思います。TextWatcherを使用して2つの値を比較するには

両方の値が異なる場合、EditTextから色を変更したいと思います。

私は既にアイデアを実装しようとしましたが、正しく動作しません。エラーは発生しません。最初の文字が等しい場合でもテキストは常に赤く表示されます。

マイコード:

public void onTextChanged(CharSequence s, int start, int before, int count) { 

     for(int i = 0; i < getString().length();i++){ 

     if (String.valueOf(s).equals(getString().charAt(i))) { 

      mEditText.setTextColor(Color.GREEN); 

     } else { 

      mEditText.setTextColor(Color.RED); 

     } 

    } 



} 

ありがとうございました。

答えて

0

edittextの文字列をtextwatcherで直接使用してみてください。

if(mEditText.getText().toString.equals("YourString") { 
    mEditText.setTextColor(Color.GREEN); 
} else { 
    mEditText.setTextColor(Color.RED); 
} 
+0

ありがとうございます。 –

0

あなたの主な問題は、CharSequence全体を1つの個別の文字と比較していることです。これは同じではない可能性があります。あなたは全体の文字列を比較したい場合は、forループをドロップすると、ちょうど使用:

if(s.equals(getString()) { 
    // Green 
} else { 
    // Red 
} 

あなたが本当にをループしたい場合、あなたは可能性が手紙で手紙を比較するが、ときにまっすぐにできることはひどいソリューションです。文字列をそのまま比較します。

0
public void onTextChanged(CharSequence s, int start, int before, int count) { 
    if(s.toString().equals(mEditText.getText().toString())) { 
     mEditText.setTextColor(Color.GREEN); 
    } 
    else { 
     mEditText.setTextColor(Color.RED); 
    } 
} 

forループを使用する必要はありません。 CharSequenceオブジェクトから文字列を取り出し、それをEditTextオブジェクトの文字列と比較するだけです。これをonTextChangedメソッドの中に入れ、文字が入力された後に比較を行います。

関連する問題