如何动态更改Spinners的内容

时间:2012-01-30 09:36:58

标签: android spinner

我在SlidingDrawer放置了4个微调器。我在string.xml中创建了一个字符串数组,比如

<string-array name="colorArray">
        <item>Red</item>
        <item>Green</item>
        <item>Blue</item>
        <item>Orange</item>
        <item>While</item>
        <item>Black</item>
</string-array>

我想用这个数组填充微调器..

因为我已经这样做了,

    option1 = (Spinner)findViewById(R.id.spinner_first);
    adapter = ArrayAdapter.createFromResource(getApplicationContext(), 
            R.array.colorArray, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    option1.setAdapter(adapter);

和其他3相同。现在对我来说很好。现在的结果是,整个数组都列在所有的微调器上。

但是我想删除所有其他微调器中由一个微调器选择的项目,以便该项目不会显示在另一个微调器中。例如,如果我为第一个微调器选择“红色”,则项目“红色“必须从所有其他旋转器中移除..

如何实现。

示例代码和指导将会很明显.. 提前谢谢..

2 个答案:

答案 0 :(得分:0)

只需创建主数组的子数组

就像首先从xml文件中获取数组现在默认情况下默认选择第0个位置然后在子数组中跳过

String mainArr[]; // fetch from xml

String sub1[] = new String[mainArr.length-1];

现在通过迭代将主数组值存储到sub1数组中,并且在get put中存储值的条件,如果选定的position == i然后跳过或选择position!=i在项目更改侦听器中执行此操作从主数组重新创建数组,跳过所选项目并通过适配器通知

答案 1 :(得分:0)

对于 Spinner onItemSelectedListener onItemSelected(),您需要为其他每个执行以下操作>纱厂

Spinner spinner; // Each one of the other spinners
String item; // Item selected in the current spinner

// Get the adapter for the other spinner
ArrayAdapter<CharSequence> array = spinner.getAdapter();
// Remove selected element in the current spinner from adapter
array.remove(item);
// Set adapter again
spinner.setAdapter(array);

抱歉,但我没有(也不能)测试它......