-1

我正在为应用程序库设计一个表单。我试图在最初设置表单时将字符串“- required”添加到字符串中。

<string name="firstName_label">First Name</string>
<string name="lastName_label">Last Name</string>
<string name="companyName_label">Company Name</string>
<string name="email_label">Email</string>
<string name="address1_label">Address</string>
<string name="address2_label">Address 2</string>
<string name="city_label">City</string>
<string name="stateProvince_label">State/Province</string>
<string name="append_required"> - required</string>

是我的一些字符串,我有一个“必填字段”来设置他们的“标志”

<string name="required_fields">firstName,lastName,email,mobilePhone,postalCode</string>

我的问题是我如何能够在 java 中检查这一点,以及将 2 个字符串组合在一起(我猜是 StringBuilder)。我希望它尽可能通用/通用,因为这是一个应用程序库,支持 15 个具有不同必填字段的不同应用程序。

4

2 回答 2

2

您可以创建一个数组来存储所有必需的字段 ID:

private static final int[] mRequiredFields = new int[]{R.string.firstName_label, R.string.lastName_label};

或者创建一个数组资源:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="required_fields">
        <item>@string/firstName_label</item>
        <item>@string/lastName_label</item>
        <item>@string/companyName_label</item>
        <item>@string/email_label</item>
    </string-array>
</resources>

然后在代码中,您可以像这样遍历数组以获得第一个建议:

final Resources resources = getResources();
final String stringToAppend = resources.getString(R.string.append_required);
for (int id : requiredFields) {
    String requiredField = resources .getString(id);

    // create your string here

}

或者对于第二个建议:

    final Resources resources = getResources();
    final String[] requiredFields = resources.getStringArray(R.array.required_fields);
    final String stringToAppend = resources.getString(R.string.append_required);
    for (String requireField : requiredFields) {
        // create your string here
    }
于 2013-06-06T21:52:34.540 回答
0

我解决了。这是我所做的:

if ((fieldsStr != null) && (fieldsStr.trim().length() > 0)) {
        String[] fields = fieldsStr.split(",");
        for (String field : fields) {
            if (required) {
                int labelID =
                        activity.getResources().getIdentifier(field + "_label", "string",
                                activity.getPackageName());
                StringBuilder hint = new StringBuilder();
                hint.append(activity.getApplicationContext().getString(labelID)).append(
                        " - Required");
                int nameID =
                        activity.getResources().getIdentifier(field, "id",
                                activity.getPackageName());
                EditText v = (EditText)activity.findViewById(nameID);
                v.setHint(hint.toString());
                }
          }
}

我使用字符串数组来获取要编辑的字符串,并且修改 getIdentifier 以获取标签而不是 ID 是我在弄清楚需要做什么之后遇到的主要问题(这是@Esteams 的答案)。之后,只需将 StringBuilder 放在一起并将其推送到 EditText。

于 2013-06-07T16:59:58.223 回答