我有一个关于微调器的问题,在网上找不到任何关于如何做到这一点的信息。
我的应用程序中有一个微调器,可以选择地区,即西南、东南。
我希望第二个微调器的可用选择取决于第一个微调器中所做的选择。即当用户选择西南时,第二个微调器上的选择将是查尔斯湖、爱荷华州、亚瑟湖等。当用户选择东南时,第二个微调器的选择将是格雷特纳、新奥尔良、鹿岭等。
我该怎么做呢?
例子将不胜感激!
谢谢!
我有一个关于微调器的问题,在网上找不到任何关于如何做到这一点的信息。
我的应用程序中有一个微调器,可以选择地区,即西南、东南。
我希望第二个微调器的可用选择取决于第一个微调器中所做的选择。即当用户选择西南时,第二个微调器上的选择将是查尔斯湖、爱荷华州、亚瑟湖等。当用户选择东南时,第二个微调器的选择将是格雷特纳、新奥尔良、鹿岭等。
我该怎么做呢?
例子将不胜感激!
谢谢!
试试这个代码..
我希望它对你有帮助...
public class MainActivity extends Activity {
Spinner sp1,sp2;
ArrayAdapter<String> adp1,adp2;
List<String> l1,l2;
int pos;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
l1=new ArrayList<String>();
l1.add("A");
l1.add("B");
sp1= (Spinner) findViewById(R.id.spinner1);
sp2= (Spinner) findViewById(R.id.spinner2);
adp1=new ArrayAdapter<String> (this,android.R.layout.simple_dropdown_item_1line,l1);
adp1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
sp1.setAdapter(adp1);
sp1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
pos=arg2;
add();
}
private void add() {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), ""+pos, Toast.LENGTH_SHORT).show();
switch(pos)
{
case 0:
l2= new ArrayList<String>();
l2.add("A 1");
l2.add("A 2");
adp2=new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_dropdown_item_1line,l2);
adp2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
sp2.setAdapter(adp2);
select();
break;
case 1:
l2= new ArrayList<String>();
l2.add("B 1");
l2.add("B 2");
adp2=new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_dropdown_item_1line,l2);
adp2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
sp2.setAdapter(adp2);
select();
break;
}
}
private void select() {
// TODO Auto-generated method stub
sp2.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "Test "+arg2, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
}
好吧,基本上你会赶上第一个微调器选择事件。在此之后,您将更改第二个微调器可用列表的内容。您可能还必须调用 invalidateView() 才能使更改生效。所以真的有三个部分
1) 在 onClick 处理程序中捕获选择。
2)修改第二个spinner的数据,过滤后将spinner2数据重置为调整后的数据。
3) 如果需要,使第二个微调器无效,并且可能在包含视图上使无效视图无效,这样它就会全部显示出来。
因此,将其分解为这三个步骤,如果您对其中任何一个有疑问,请告诉我们。