我可以为一个微调器使用两个字符串列表吗?

时间:2011-07-26 09:35:36

标签: android spinner

我想使用一个可以同时处理两个String arraylist的微调器。我想要的是当用户点击微调器时所出现的视图应该显示第一个arraylist的String项,但是在选择了其中一个项后,它应该显示第二个arraylist的相应项。

例如我有2个列表第1个是州列表&第二个是状态代码列表所以当我按下微调器时所以出现的视图应该显示状态列表但是在选择其中一个状态(比如Albama)之后,微调器应该显示状态代码(AL)。

2 个答案:

答案 0 :(得分:3)

最干净的方法是将数据正确地包装在一个对象中。 toString方法将用于告诉如何在微调器中显示数据。然后在OnClick侦听器中,您可以从适配器获取State,然后获取其代码。

public class State {
  String code;
  String name;

  public State(String n, String c) {
    name = n;
    code = c;
  }

  public String toString() { 
    return name; 
  }
}

然后使用适配器的State对象的数组列表。

基于Hello, Spinner教程的示例:

替换:

ArrayAdapter adapter = ArrayAdapter.createFromResource(
        this, R.array.planets, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

人:

State[] states = new State[] { new State('Alabama', 'AL'), new State('California', 'CA')  };
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, states);

答案 1 :(得分:1)

在第一个微调器的onClick()方法中,在runTime创建另一个微调器,并根据单击的项目将第二个字符串数组附加到它...我的意思是这样......

Spinner s1 = findViewById(R.id.spinner01);
ArrayAdapter a = new ArrayAdapter(/*/required stuff*/,array1)
s1.setAdapter(a);
s1.setOnClickListener(new OnClickListener(){
protected void onClick(View v){
    Spinner s = new Spinner(/*/activity Instance*/);
ArrayAdapter a1 = new ArrayAdapter(/*/required stuff*/,array2)
s.setAdapter(a1);
//rest goes here
}
});