Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于if-else语句更改字符串数组项_Java_Android_Navigation Drawer_Arrays - Fatal编程技术网

Java 基于if-else语句更改字符串数组项

Java 基于if-else语句更改字符串数组项,java,android,navigation-drawer,arrays,Java,Android,Navigation Drawer,Arrays,我使用这个字符串数组作为listview数组来显示在导航抽屉中 <string-array name="navItems"> <item>Character 1</item> <item>Character 2</item> <item>Character 3</item> <item>Character 4</item> <item>C

我使用这个字符串数组作为listview数组来显示在导航抽屉中

<string-array name="navItems">
    <item>Character 1</item>
    <item>Character 2</item>
    <item>Character 3</item>
    <item>Character 4</item>
    <item>Character 5</item>
    <item>Character 6</item>
    <item>Character 7</item>
    <item>Character 8</item>
    <item>Character 9</item>
    <item>Character 10</item>
</string-array>
是否可以通过编程方式更改这些数组项,以便在用户命名角色时可以更改它们

谢谢您的时间。

您无法修改getResources.getStringArrayR.id.navItems返回的内容。这些值是固定的。但您可以将修改后的信息存储在共享首选项中

由于首选项是键>值存储,因此需要定义键的工作方式。仅使用名称不足以存储10个不同的名称。 一种常见的方法是定义两个数组,一个包含键,一个包含自定义翻译文本。两者的长度必须相同

<string-array name="navItemKeys">
    <item>char_1</item>
    <item>char_1</item>
    ...
然后在这些键下保存自定义名称。要加载适配器的名称数组,可以执行以下操作

String[] loadArray(Context context, SharedPreferences prefs) {
    String[] defaultNames = context.getResources().getStringArray(R.array.navItems);
    String[] lookupKeys = context.getResources().getStringArray(R.array.navItemKeys);

    String[] result = new String[defaultNames.length];

    for (int i = 0; i < lookupKeys.length; i++) {
        String lookupKey = lookupKeys[i];
        String defaultName = defaultNames[i];
        result[i] = prefs.getString(lookupKey, defaultName);
    }

    return result;
}

我认为你需要澄清你想做什么。我不明白。
String[] loadArray(Context context, SharedPreferences prefs) {
    String[] defaultNames = context.getResources().getStringArray(R.array.navItems);
    String[] lookupKeys = context.getResources().getStringArray(R.array.navItemKeys);

    String[] result = new String[defaultNames.length];

    for (int i = 0; i < lookupKeys.length; i++) {
        String lookupKey = lookupKeys[i];
        String defaultName = defaultNames[i];
        result[i] = prefs.getString(lookupKey, defaultName);
    }

    return result;
}