1

私の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);

これをきれいにするにはどうすればよいですか?

4

1 に答える 1

0

各フィールドにマップと新しい列挙型を使用することになりました。

于 2012-07-08T00:38:56.730 に答える