2024年10月android spinner(android中spinner如何实现省市二级联动)
⑴androidspinner(android中spinner如何实现省市二级联动
⑵示例如下:public?class?MainActivity?extends?Activity?{?private?TextView?textView?;?private?Spinner?province;?private?Spinner?city;?????/**?Called?when?the?activity?is?first?created.?*/?????Override?????public?void?onCreate(Bundle?savedInstanceState)?{?????????super.onCreate(savedInstanceState);?????????setContentView(R.layout.main);?????????????????//String{“-省份-“,“河北省“,“山西省“,“北京“};?????????textView?=?(TextView)this.findViewById(R.id.textView);?????????province?=?(Spinner)this.findViewById(R.id.province);?????????city?=?(Spinner)this.findViewById(R.id.city);?????????????????//(处理省的显示)?????????//将可选内容与ArrayAdapter的连接(从资源数组文件中获取数据)?????????ArrayAdapter《CharSequence》?adapter?=??????????????ArrayAdapter.createFromResource(this,?R.array.province,?android.R.layout.simple_spinner_item);??????????//new?ArrayAdapter《String》(this,android.R.layout.simple_spinner_item,?provinces);?????????//设置下拉列表的风格?????????adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);?????????????????//将数据绑定到Spinner视图上?????????province.setAdapter(adapter);?????????????????//添加条目被选中监听器?????????province.setOnItemSelectedListener(new?AdapterView.OnItemSelectedListener()?{????????????????Override????public?void?onItemSelected(AdapterView《?》?parent,?View?view,int?position,?long?id)?{?????//parent既是province对象?????Spinner?spinner?=?(Spinner)parent;?????String?pro?=??(String)spinner.getItemAtPosition(position);?????//(处理省的市的显示)?????//将默认值与ArrayAdapter连接(从资源数组文件中获取数据)?????ArrayAdapter《CharSequence》?cityAdapter?=?ArrayAdapter.createFromResource????????????????????(MainActivity.this,?R.array.citydefault,?android.R.layout.simple_spinner_item);??????//new??ArrayAdapter《CharSequence》???????????//???????????(MainActivity.this,android.R.layout.simple_spinner_item,?cities);?????//获取所在省含有哪些市(从资源数组文件中获取数据)?????if(pro.equals(“河北省“)){???????????cityAdapter?=?ArrayAdapter.createFromResource?????????????????(MainActivity.this,?R.array.hb,?android.R.layout.simple_spinner_item);?????}else?if(pro.equals(“北京市“)){???????????cityAdapter?=?ArrayAdapter.createFromResource?????????????????(MainActivity.this,?R.array.bj,?android.R.layout.simple_spinner_item);?????}else?if(pro.equals(“山西省“)){???????????cityAdapter?=?ArrayAdapter.createFromResource?????????????????(MainActivity.this,?R.array.shx,?android.R.layout.simple_spinner_item);?????}?????//绑定数据到Spinner(City)上?????city.setAdapter(cityAdapter);????}????Override????public?void?onNothingSelected(AdapterView《?》?parent)?{????????}????????????????});?????}?}Android控件之Spinner简单使用在drawable包下,新建一个xml文件spinner_background.xml,自定义Spinner的背景:在res/values/styles.xml中添加一个style,然后在Spinner添加这个Theme:在想要添加Spinner控件的layout里添加Spinner控件:这里我在res/values中添加了一个str_array_services.xml:那些string/xxx在strings.xml定义这些字符串.(这里为了更好的耦合性,可以设置成多个语言版本)怎么实现Android的Spinner控件不可编辑spinner是View的子类,View有个属性android:clickable=false就是设置控件不可点击关于Spinner的实例代码:新建一个android工程,importjava.util.ArrayList;importjava.util.List;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.MotionEvent;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.ArrayAdapter;importandroid.widget.Spinner;importandroid.widget.TextView;publilassSpinnerActivityextendsActivity{??/**Calledwhentheactivityisfirstcreated.*/???privateList《String》list=newArrayList《String》();???privateTextViewmyTextView;???privateSpinnermySpinner;???privateArrayAdapter《String》adapter;???Override???publicvoidonCreate(BundlesavedInstanceState){?????super.onCreate(savedInstanceState);?????setContentView(R.layout.main);?????//第一步:添加一个下拉列表项的list,adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);?????//第四步:将适配器添加到下拉列表上?????mySpinner.setAdapter(adapter);?????//第五步:为下拉列表设置各种事件的响应,这里添加的项就是下拉列表的菜单项?????list.add(“北京“);?????list.add(“上海“);?????list.add(“深圳“);?????list.add(“福州“);?????list.add(“厦门“);?????myTextView=(TextView)findViewById(R.id.TextView_city);?????mySpinner=(Spinner)findViewById(R.id.Spinner_city);?????//第二步:为下拉列表定义一个适配器,adapter=newArrayAdapter《String》(this,android.R.layout.simple_spinner_item,list);?????//第三步:为适配器设置下拉列表下拉时的菜单样式,这个事响应菜单被选中?????mySpinner.setOnItemSelectedListener(newSpinner.OnItemSelectedListener(){???????publicvoidonItemSelected(AdapterView《?》arg,Viewarg,intarg,longarg){?????????//TODOAuto-generatedmethodstub?????????/*将所选mySpinner的值带入myTextView中*/?????????myTextView.setText(“您选择的是:“+adapter.getItem(arg));?????????/*将mySpinner显示*/?????????arg.setVisibility(View.VISIBLE);???????}???????publicvoidonNothingSelected(AdapterView《?》arg){?????????//TODOAuto-generatedmethodstub?????????myTextView.setText(“NONE“);?????????arg.setVisibility(View.VISIBLE);???????}?????});?????/*下拉菜单弹出的内容选项触屏事件处理*/?????mySpinner.setOnTouchListener(newSpinner.OnTouchListener(){???????publicbooleanonTouch(Viewv,MotionEventevent){?????????//TODOAuto-generatedmethodstub?????????/**?????????*??????????*/????????returnfalse;???????}????});?????/*下拉菜单弹出的内容选项焦点改变事件处理*/?????mySpinner.setOnFocusChangeListener(newSpinner.OnFocusChangeListener(){?????publicvoidonFocusChange(Viewv,booleanhasFocus){?????//TODOAuto-generatedmethodstub?????}?????});???}?}.运行效果.点击的效果,本文目录android中spinner如何实现省市二级联动Android控件之Spinner简单使用怎么实现Android的Spinner控件不可编辑android中spinner如何实现省市二级联动??Androidspinner实现省市二级联动,名称为Spinner。
⑶android中spinner如何实现省市二级联动
⑷Androidspinner实现省市二级联动,需要自定义adpter,将数据源绑定到adpter,当点击省时,触发自定义响应事件,改变市,示例如下:
⑸public?class?MainActivity?extends?Activity?{?private?TextView?textView?;?private?Spinner?province;?private?Spinner?city;?????/**?Called?when?the?activity?is?first?created.?*/?????Override?????public?void?onCreate(Bundle?savedInstanceState)?{?????????super.onCreate(savedInstanceState);?????????setContentView(R.layout.main);?????????????????//String{“-省份-“,“河北省“,“山西省“,“北京“};?????????textView?=?(TextView)this.findViewById(R.id.textView);?????????province?=?(Spinner)this.findViewById(R.id.province);?????????city?=?(Spinner)this.findViewById(R.id.city);?????????????????//(处理省的显示)?????????//将可选内容与ArrayAdapter的连接(从资源数组文件中获取数据)?????????ArrayAdapter《CharSequence》?adapter?=??????????????ArrayAdapter.createFromResource(this,?R.array.province,?android.R.layout.simple_spinner_item);??????????//new?ArrayAdapter《String》(this,android.R.layout.simple_spinner_item,?provinces);?????????//设置下拉列表的风格?????????adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);?????????????????//将数据绑定到Spinner视图上?????????province.setAdapter(adapter);?????????????????//添加条目被选中监听器?????????province.setOnItemSelectedListener(new?AdapterView.OnItemSelectedListener()?{????????????????Override????public?void?onItemSelected(AdapterView《?》?parent,?View?view,int?position,?long?id)?{?????//parent既是province对象?????Spinner?spinner?=?(Spinner)parent;?????String?pro?=??(String)spinner.getItemAtPosition(position);?????//(处理省的市的显示)?????//将默认值与ArrayAdapter连接(从资源数组文件中获取数据)?????ArrayAdapter《CharSequence》?cityAdapter?=?ArrayAdapter.createFromResource????????????????????(MainActivity.this,?R.array.citydefault,?android.R.layout.simple_spinner_item);??????//new??ArrayAdapter《CharSequence》???????????//???????????(MainActivity.this,android.R.layout.simple_spinner_item,?cities);?????//获取所在省含有哪些市(从资源数组文件中获取数据)?????if(pro.equals(“河北省“)){???????????cityAdapter?=?ArrayAdapter.createFromResource?????????????????(MainActivity.this,?R.array.hb,?android.R.layout.simple_spinner_item);?????}else?if(pro.equals(“北京市“)){???????????cityAdapter?=?ArrayAdapter.createFromResource?????????????????(MainActivity.this,?R.array.bj,?android.R.layout.simple_spinner_item);?????}else?if(pro.equals(“山西省“)){???????????cityAdapter?=?ArrayAdapter.createFromResource?????????????????(MainActivity.this,?R.array.shx,?android.R.layout.simple_spinner_item);?????}?????//绑定数据到Spinner(City)上?????city.setAdapter(cityAdapter);????}????Override????public?void?onNothingSelected(AdapterView《?》?parent)?{????????}????????????????});?????}?}
⑹Android控件之Spinner简单使用
⑺在drawable包下,新建一个xml文件spinner_background.xml,自定义Spinner的背景:在res/values/styles.xml中添加一个style,然后在Spinner添加这个Theme:在想要添加Spinner控件的layout里添加Spinner控件:这里我在res/values中添加了一个str_array_services.xml:那些string/xxx在strings.xml定义这些字符串.(这里为了更好的耦合性,可以设置成多个语言版本)
⑻怎么实现Android的Spinner控件不可编辑
⑼spinner是View的子类,View有个属性android:clickable=false就是设置控件不可点击
⑽关于Spinner的实例代码:
⑾importjava.util.ArrayList;
⑿importjava.util.List;
⒀importandroid.app.Activity;
⒁importandroid.os.Bundle;
⒂importandroid.view.MotionEvent;
⒃importandroid.view.View;
⒄importandroid.widget.AdapterView;
⒅importandroid.widget.ArrayAdapter;
⒆importandroid.widget.Spinner;
⒇importandroid.widget.TextView;
⒈publilassSpinnerActivityextendsActivity{
⒉/**Calledwhentheactivityisfirstcreated.*/
⒊privateList《String》list=newArrayList《String》();
⒋privateTextViewmyTextView;
⒌privateSpinnermySpinner;
⒍privateArrayAdapter《String》adapter;
⒎publicvoidonCreate(BundlesavedInstanceState){
⒏super.onCreate(savedInstanceState);
⒐setContentView(R.layout.main);
⒑//第一步:添加一个下拉列表项的list,这里添加的项就是下拉列表的菜单项
⒒list.add(“北京“);
⒓list.add(“上海“);
⒔list.add(“深圳“);
⒕list.add(“福州“);
⒖list.add(“厦门“);
⒗myTextView=(TextView)findViewById(R.id.TextView_city);
⒘mySpinner=(Spinner)findViewById(R.id.Spinner_city);
⒙//第二步:为下拉列表定义一个适配器,这里就用到里前面定义的list。
⒚adapter=newArrayAdapter《String》(this,android.R.layout.simple_spinner_item,list);
⒛//第三步:为适配器设置下拉列表下拉时的菜单样式。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//第四步:将适配器添加到下拉列表上
mySpinner.setAdapter(adapter);
//第五步:为下拉列表设置各种事件的响应,这个事响应菜单被选中
mySpinner.setOnItemSelectedListener(newSpinner.OnItemSelectedListener(){
publicvoidonItemSelected(AdapterView《?》arg,Viewarg,intarg,longarg){
//TODOAuto-generatedmethodstub
/*将所选mySpinner的值带入myTextView中*/
myTextView.setText(“您选择的是:“+adapter.getItem(arg));
/*将mySpinner显示*/
arg.setVisibility(View.VISIBLE);
publicvoidonNothingSelected(AdapterView《?》arg){
//TODOAuto-generatedmethodstub
myTextView.setText(“NONE“);
arg.setVisibility(View.VISIBLE);
/*下拉菜单弹出的内容选项触屏事件处理*/
mySpinner.setOnTouchListener(newSpinner.OnTouchListener(){
publicbooleanonTouch(Viewv,MotionEventevent){
//TODOAuto-generatedmethodstub
returnfalse;
/*下拉菜单弹出的内容选项焦点改变事件处理*/
mySpinner.setOnFocusChangeListener(newSpinner.OnFocusChangeListener(){
publicvoidonFocusChange(Viewv,booleanhasFocus){
//TODOAuto-generatedmethodstub