这是上个星期自己摸索出来的一个逻辑,可能很复杂,用的也不是很先进的方法打,但是总归是摸索出来了,记录一下免得以后忘了
功能描述:
1、当添加数据的时候,实现spinner地区之间的三级联动。
2、当修改数据的时候,要根据已有的地区将联动显示完整,例如拿到的值为“虎门镇”,那么就要在二级spinner显示东莞市,一级spinner显示广东省
界面代码很简单就三个spinner这里就不放代码了,直接Java代码
private Spinner suoshushequ,erjisq,sjsq;
先定义三个spinner,然后是找id
suoshushequ=(Spinner) findViewById(R.id.rkregister_belonetoshequ);//所属社区
erjisq=(Spinner) findViewById(R.id.rkregister_sssqerji);//二级地区
sjsq=(Spinner) findViewById(R.id.rkregister_sssqsanji);//三级地区
然后是添加时候的核心代码
ArrayAdapter<CharSequence>shiadapter3=ArrayAdapter.createFromResource(this,R.array.dongguanshi,android.R.layout.simple_spinner_item);
shiadapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
suoshushequ.setAdapter(shiadapter3);
suoshushequ.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long arg3) {
Spinner spinner=(Spinner) arg0;
String aaa=(String) spinner.getItemAtPosition(position);
ArrayAdapter<CharSequence> sheadapter3 = ArrayAdapter.createFromResource(CZRKRegisterActivity.this, R.array.gcq, android.R.layout.simple_spinner_item);
if (aaa.equals("莞城区")) {
if (aa.equals("tj")) {
sheadapter3=ArrayAdapter.createFromResource(CZRKRegisterActivity.this,R.array.gcq,android.R.layout.simple_spinner_item); sheadapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);}else if (aa.equals("xg")) { sheadapter3=CZRKRegisterActivity.this.sheadapter3; sheadapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);}
erjisq.setAdapter(sheadapter3);
erjisq.setVisibility(View.VISIBLE); erjisq.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
Spinner spinner=(Spinner) arg0;
final String bb(String)spinner.getItemAtPosition(arg2);
diqu=bb