适配器创建Spinner列表框

来源:互联网 发布:北京大学 大数据专业 编辑:程序博客网 时间:2024/06/15 21:17

上一篇文章中,本人是用布局管理器先建立了两个列表框,然后在value中设置了创建一个array.xml文件,在文件中定义了一级列表框的内容,然后在主方法只能中关联该一级列表数据,且另外定义了一级列表所对应的二级列表,即当修改一级列表的某个值时,二级列表中的值也跟着改变。本文另辟途径,利用适配器关联一级二级数组,实现可以随之变动的列表框关系。实现步骤如下:

1.创建一个项目,在布局layout中添加两个SPinner组件,id分别命名为spinner,spinner2

2.另创建一个类mySpinner,代码如下:

package com.mingrisoft;


import java.util.ArrayList;
import java.util.List;


class mySpinner{
/*******************本类定义一个集合,在集合中添加城市列表,以备主方法中调用***********************/
public mySpinner(){

}
public static List<String>getList(){         //定义城市列表
List<String>list=new ArrayList<String>();
list.add("广西-南宁");
list.add("广西-柳州");
list.add("广西-桂林");
list.add("广西-钦州");
list.add("广西-北海");
list.add("广西-防城港");
return list;
}
}

3.在主方法中创建一个城市对应城区的二级列表数据数组,并关联一级列表,有关代码如下:

private Spinner spinner;      //定义Spinner
private Spinner spinner2;
private String city[][]={{"兴宁区","江南区","青秀区","西乡塘区","邕宁区","良庆区",
"武鸣县","横县","宾阳县","上林县","马山县","隆安县"},
{"柳城","柳江","鹿寨","融水","融安","三江","鱼峰区","城中区","柳南区","柳北区"},
{"象山区","叠彩区","秀峰区","七星区","雁山区","阳朔县","临桂县","灵川县","全州县",
"兴安县","永福县","灌阳县","资源县","平乐县","荔浦县","龙胜各族自治县","恭城瑶族自治县"},
{"钦南区","钦北区","灵山县","浦北县"},
{"合浦县","海城区","银海区","铁山港区"},
{"东兴市","港口区","防城区","上思县"}};


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner_text);
spinner=(Spinner)this.findViewById(R.id.spinner1);
spinner2=(Spinner)this.findViewById(R.id.spinner2);
/**********************调用类mySpinner.getList()方法**********************/
List<String>list=mySpinner.getList();
/**********************定义一个适配器,存放城市数组************************/
ArrayAdapter<String>adapter=new ArrayAdapter<String>
(SpinnerText.this,android.R.layout.simple_spinner_item,list);
SpinnerText.this.spinner.setAdapter(adapter);
/*************************将二级数组城区关联一级数组*****************************/
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO 自动生成的方法存根
ArrayAdapter<String>adapter=new ArrayAdapter<String>
(SpinnerText.this,android.R.layout.simple_spinner_item,city[position]);
/****************************关联二级城区********************************/
SpinnerText.this.spinner2.setAdapter(adapter);

}


@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO 自动生成的方法存根

}
});

}

运行结果如下:



0 0