パフォーマンスと最適化の観点から、プロジェクト全体に共通の汎用テキストウォッチャーを使用するのはどの程度良いですか?私のプロジェクトでは、多くの edittext を使用しており、各 edittext には実装するリスナーがあります。このような一般的なテキストウォッチャーを作成しました。各リスナーで画面の他のビューにアクセスする必要があるため、それらのビューをコンストラクターで渡します。以下のアプローチはコードの可読性を向上させますが、キャストのオーバーヘッドが発生します。従うのが良い方法ですか?このアプローチ?私が従うことができるより良いアプローチはありますか?-
public class GenericTextWatcher implements TextWatcher {
private View view,view2,view3,view4;
public GenericTextWatcher(View view) {
this.view = view;
}
public GenericTextWatcher(View view,View view2,View view3) {
this.view = view;
this.view2=view2;
this.view3=view3;
}
public GenericTextWatcher(View view,View view2) {
this.view = view;
this.view2=view2;
}
public GenericTextWatcher(View view,View view2,View view3,View view4) {
this.view = view;
this.view2=view2;
this.view3=view3;
this.view4=view4;
}
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
switch (view.getId())
{
case R.id.etMfafasf:
if (((EditText)view).getText().length()==8 &&((EditText)view2).getText().length()>0)
((TextView)view3).setEnabled(true);
else
((TextView)view3).setEnabled(false);
break;
case R.id.etModaDFFSA:
if (((EditText)view2).getText().length()>0 &&((EditText)view).getText().length()==8)
((TextView)view3).setEnabled(true);
else
((TextView)view3).setEnabled(false);
ValidationUtils.checkfasffsfimit(charSequence,(TextInputLayout)view4);
break;
case R.id.etMoXYZ:
if (((EditText)view).getText().length()==8)
((TextView)view2).setEnabled(true);
else
((TextView)view2).setEnabled(false);
break;
}
}
public void afterTextChanged(Editable editable) {
}
}
TextWatcher の呼び出し
etNumber.addTextChangedListener(new GenericTextWatcher(etNumber,tvNdf));