Android中的动态旋转器(常规工作流程问题)

时间:2011-03-10 18:08:51

标签: java android spinner

就像这个one一样,我在这个网站上看到了一些操作方法,但说实话,我并不是真的得到它

我希望一个微调器的内容基于先前的微调器选择,就像在States和Cities场景中一样。一般而言,工作流程是什么?第二个微调器的结果是基于第一个微调器过滤的,还是第二个微调器指向基于第一个微调器的完全不同的列表?

对于我自己的简单学习项目,我在strings.xml(AL-Cities,AK-Cities,AR-Cities等)中构建了几个字符串数组。我希望城市微调器能够根据状态微调器的选择从正确的阵列中填充。但我想知道是否应该只有一个大型多维数组“城市”,其中有一个州名缩写作为附加标识符,然后使用状态缩写作为过滤器指向第二个微调器。看起来前者会提供更好的表现。

非常感谢任何帮助(和代码示例)。我不是编程的新手(主要是php,所以我猜脚本编写更准确),但我是java的新手。到目前为止我的代码与未连接的微调器在下面,第二个微调器指向一个无差别的city_array。

谢谢!

public class Example1 extends Activity {

/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.example1);

   Spinner spinState = (Spinner) findViewById(R.id.spin_state);
    ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(
            this, R.array.state_array, android.R.layout.simple_spinner_item);
    adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinState.setAdapter(adapter3);

    Spinner spinCity = (Spinner) findViewById(R.id.spin_city);
    ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource(
            this, R.array.city_array, android.R.layout.simple_spinner_item);
    adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinCity.setAdapter(adapter4);
}
}

1 个答案:

答案 0 :(得分:1)

您可以尝试从第一个微调器获取位置,即您选择的位置,然后在根据该位置检索正确的阵列后填充第二个微调器。

您必须侦听您的第一个适配器被更改:

    spinner. setOnItemSelectedListener(new MyOnItemSelectedListener());


class MyOnItemSelectedListener implements OnItemSelectedListener {
    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
        String choice = parent.getItemAtPosition(pos).toString();
            populateSecondSpinnerMethod(choice)
       }
    }
    public void onNothingSelected(AdapterView parent) {       // Do nothing.
    }
}