在我的 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);
如何让这变得又好又干净?