10

5 つの編集テキストに対して 5 つの addTextChangedListener があります。単一の関数でそれらをカスタマイズしたいので、editttext の ID を渡すだけで、addTextChangedListener がそれに適用されます。これで私。

コード

mobileNumber.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                mobileNumber.setError(null);
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub
            }

            @Override
            public void afterTextChanged(Editable s) {
                mobileNumber.setError(null);
            }
        });

        mobileNumber2.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                mobileNumber2.setError(null);
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub
            }

            @Override
            public void afterTextChanged(Editable s) {
                mobileNumber2.setError(null);
            }
        });

        mobileNumber1.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                mobileNumber1.setError(null);
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub
            }

            @Override
            public void afterTextChanged(Editable s) {
                mobileNumber1.setError(null);
            }
        });

すべての addTextChangedListener は、異なる id に対して同じことを行っています。これは、android で関数としてカスタマイズすることが可能であり、id を渡すだけで、addTextChangedListener が適用されます

提案するように

public class BookingClassAddListenerOnTextChange implements TextWatcher {
    private Context mContext;
    EditText mEdittextview;

    public BookingClassAddListenerOnTextChange(Context context, EditText edittextview) {
        super();
        this.mContext = context;
        this.mEdittextview= edittextview;

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

    }

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

    }

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

    }
    public void addTextChangedListener(
            BookingClassAddListenerOnTextChange bookingClassAddListenerOnTextChange) {
        // TODO Auto-generated method stub

    }

}
4

2 に答える 2

16

そのように Listener クラスを作成する必要があります。リスナーを追加する EditText ID を受け入れるようにコンストラクターのパラメーターを変更するだけです。

public class addListenerOnTextChange implements TextWatcher {
    private Context mContext;
    EditTextView mEdittextview;

    public addListenerOnTextChange(Context context, EditTextView edittextview) {
        super();
        this.mContext = context;
        this.mEdittextview= edittextview;
    }

    @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) {
        //What you want to do
        }
    }
}

あなたはあなたの活動でそれらをこのように呼びます

mobileNumber2.addTextChangedListener(new addListenerOnTextChange(this, mobileNumber2));

必要に応じてパラメータを再度変更します。

于 2013-08-29T06:52:01.817 に答える