选择一个特定的字符串数组

时间:2018-06-28 11:59:32

标签: android

我有一个问题,我自己找不到解决方案。例如,我正在使用以下字符串数组:

     <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之间的项目并将其存储在阵列中,然后应将该阵列中的这些信息随机化并在以后格式化为组。但是我只需要选择一个字符串即可。

那么有没有一种方法可以根据第一个数组中的选择只选择一个数组?

亲切的问候,

4 个答案:

答案 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) {

        }
    });
}