私のAndroidアプリケーションには、次のようなフィールドがいくつかあります
MyButton a;
MyEditText b;
MySpinner c;
MyTextView d;
これらのそれぞれpublic class MyButton extends Button implements InfoExtract
は
public interface InfoExtract{
String getTheText();
}
これらのフィールド (ユーザーはそれらの一部を変更できます) のうち、次のように作成される UserProfile があります。
public class ProfileUpdate {
// The fields have to be string no matter what
String firstName;
String lastName;
String dateOfBirth;
String relationshipStatus
}
実行フローは次のようになります。
List<InfoExtract> uiElements = new ArrayList<InfoExtract>();
uiElements.add(a);
uiElements.add(b);
uiElements.add(c);
uiElements.add(d);
someButton.setOnClickListener(new SaveProfileListener(uiElements);
SaveProfileListener
多かれ少なかれこれを行います:
ProfileUpdate pup = new ProfileUpdate();
int i = 0;
pup.firstName = uiElements.get(i++).getTheText()
pup.lastName = uiElements.get(i++).getTheText();
pup.dateOfBirth = uiElements.get(i++).getTheText();
pup.relationshipStatus = uiElements.get(i++).getTheText();
悪いこと #1:別のフィールドを追加したい場合、明らかに大変な作業です。
悪い点 #2:リスト内の要素の順序は重要です。
悪い点 #3:たとえば、dateOfBirth の日付形式を簡単に操作できません。
私ができることはありますが、同様に悪いことは次のとおりです。
// Pass the listener what fields it should use.
someButton.setOnClickListener(new SaveProfileListener(a, b, c, d);
これをきれいにするにはどうすればよいですか?