我有一个问题,我自己找不到解决方案。例如,我正在使用以下字符串数组:
<string-array name="alphabet">
<item>ccc</item>
<item>bbb</item>
<item>aaa</item>
</string-array>
<string-array name="ccc">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="bbb">
<item>4</item>
<item>5</item>
<item>6</item>
</string-array>
<string-array name="aaa">
<item>7</item>
<item>8</item>
<item>9</item>
</string-array>
因此,第一个字符串数组字母位于微调器内。 (下拉菜单)假设我选择了CCC,然后我只希望处理阵列CCC之间的项目并将其存储在阵列中,然后应将该阵列中的这些信息随机化并在以后格式化为组。但是我只需要选择一个字符串即可。
那么有没有一种方法可以根据第一个数组中的选择只选择一个数组?
亲切的问候,
答案 0 :(得分:1)
这是您所需的代码。
第1步]在第一个微调器上设置setOnItemSelectedListener并获取目标微调器的数组名
spinner_alphabates.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l)
{
String arrayName = spinner_alphabates.getSelectedItem().toString();
int resId = getResources().getIdentifier(arrayName,"array",getPackageName());
setResultArray(resId);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
步骤2]将目标微调器上的结果数组设置为
public void setResultArray(int resID)
{
String [] result_array = getResources().getStringArray(resID);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, result_array);
spinner_result.setAdapter(adapter);
}
无需放置'if''else'条件以匹配数组名称。
希望这对您有所帮助。
答案 1 :(得分:0)
尝试一下,我不确定它是否会工作,只需尝试一下
<string-array name="ccc">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<integer-array name="id">
<item> @array/ccc </item>
</integer-array>
答案 2 :(得分:0)
您需要获取这样的字符串数组。然后您将使用字符串数组的索引对其进行访问。
String.xml
<string-array name="my_books">
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
<item>Item 4</item>
</string-array>
获取Java文件中的字符串列表,例如:
Resources res = getResources();
String[] myBooks = res.getStringArray(R.array.my_books);
答案 3 :(得分:0)
尝试此方法,并将其放入活动方法中的onCreate中。
更改此数组再添加一个项目。
<string-array name="alphabet">
<item>Select</item>
<item>ccc</item>
<item>bbb</item>
<item>aaa</item>
</string-array>
private void initView() {
spinner = findViewById(R.id.spinner);
final List<String> asList = Arrays.asList(getResources().getStringArray(R.array.alphabet));
final ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, asList);
final ArrayAdapter<String> adapter2 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (spinner.getSelectedItem().equals("ccc")) {
adapter2.addAll(Arrays.asList(getResources().getStringArray(R.array.ccc)));
spinner.setAdapter(adapter2);
adapter2.notifyDataSetChanged();
} else if (spinner.getSelectedItem().equals("aaa")) {
adapter2.addAll(Arrays.asList(getResources().getStringArray(R.array.aaa)));
spinner.setAdapter(adapter2);
adapter2.notifyDataSetChanged();
} else if (spinner.getSelectedItem().equals("bbb")) {
adapter2.addAll(Arrays.asList(getResources().getStringArray(R.array.bbb)));
spinner.setAdapter(adapter2);
adapter2.notifyDataSetChanged();
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}