Java 基于if-else语句更改字符串数组项
我使用这个字符串数组作为listview数组来显示在导航抽屉中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
<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;
}