您的位置:首页 > 产品设计 > UI/UE

Android UI(Spinner)详解

2016-08-12 21:28 405 查看
目录

    1.应用场景

    2.常用属性

    3.xml数据源+布局实现Spinner

    4.Arrayadapter+ArrayList+布局实现Spinner

    5.自定义adapter+数据源+布局实现Spinner

    6.多级连联动Spinner实现(市县区三级联动)

    

1.应用场景

    Spinner即列表选项框多应用于城市选择或者一些搜索分类选取一种的情况

    

2.常用属性
<span style="font-size:14px;">        <!--设置xml数组资源-->
android:entries="@values/"
<!--设置列表框背景-->
android:popupBackground=""
<!--列表框选中时的背景-->
android:dropDownSelector=""
<!--设置显示选择项的宽-->
android:layout_width="wrap_content"
<!--设置显示选择项的高-->
android:layout_height="wrap_content"
<!--设置列表框的水平偏移量-->
android:dropDownHorizontalOffset="12dp"
<!--设置列表框的垂直偏移量-->
android:dropDownVerticalOffset="1dp"
<!--设置列表框的宽度-->
android:dropDownWidth="40dp"
<!--设置spinner的显示模式-->
android:spinnerMode="dropdown|dialog"
<!--设置列表框的scrollbar的布局方式-->
android:scrollbars="vertical"
<!--设置对话框模式的标题,仅限strings.xml设置的资源-->
android:prompt=""
<!--设置列表框的水平scrollbar的drawble-->
android:scrollbarThumbHorizontal="@mipmap/ic_launcher"
<!--设置垂直滚动条的背景-->
android:scrollbarTrackHorizontal=""</span>


3.xml数据源+布局实现Spinner

    1)数据源myarraylist.xml
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="myarraydata">
<item>上海</item>
<item>北京</item>
<item>广州</item>
<item>深圳</item>
<item>杭州</item>
<item>成都</item>
</string-array>
</resources> 
</span>


    2)主布局xml
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.spinnerui.MainActivity">

<Spinner
android:id="@+id/dropdownSp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:dropDownHorizontalOffset="5dp"
android:dropDownVerticalOffset="5dp"
android:entries="@array/myarraydata"
>

</Spinner>
</RelativeLayout></span>
   

    3)Java类文件
<span style="font-size:14px;">package com.example.spinnerui;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
private Spinner dropdownSp;
//Spinner默认选择第一项,所以刚进入是会触发onItemSelected事件,为了解决这个问题定义类firstSelect
private boolean firstSelect=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
dropdownSp= (Spinner) findViewById(R.id.dropdownSp);
//设置监听
dropdownSp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
/*
* parent:指示spinner
* view:显示item的空间,这里指TextView
* position:被选中的item的位置
* id:选中项的id
* */
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (!firstSelect)
{
//打印提示,parent.getItemAtPosition(position)获取选中位置的值
Toast.makeText(MainActivity.this,"你选择了:"+parent.getItemAtPosition(position).toString(),
Toast.LENGTH_SHORT).show();
Log.d("id",id+"");
Log.d("position",position+"");
Log.d("view",view.toString());
Log.d("parent",parent.toString());
}else {
firstSelect=false;
}

}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});
}
}
</span>


    4)效果截图



4.Arrayadapter+ArrayList+布局实现Spinner

    1)自定义的已选取item的布局drop_item.xml
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@+id/list_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorAccent"
xmlns:android="http://schemas.android.com/apk/res/android" /></span>


    2)主布局文件
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.spinnerui.SecondActivity">

<Spinner
android:id="@+id/dialogSp"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:spinnerMode="dialog"
android:prompt="@string/dialog_title"
android:dropDownHorizontalOffset="20dp"
android:dropDownVerticalOffset="5dp"
>

</Spinner>
</RelativeLayout></span>


    3)Java文件代码 

package com.example.spinnerui;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.ArrayList;

public class SecondActivity extends AppCompatActivity {
private Spinner dialogSp;
private boolean firstSelect=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//初始化
dialogSp= (Spinner) findViewById(R.id.dialogSp);
//初始化数据源
ArrayList<String> array=new ArrayList<String>();
for (int i=0;i<5;i++){
array.add(i,"数据"+i);
}
/*
* ArrayAdapter(Context context, int resource, List<T> objects)
* context:表示上下文
* int resource:选取的item的布局
* objects:数据
* */
//系统内置的选取的Item的TextView布局:android.R.layout.simple_spinner_item
//自定义的选取的Item的TextView布局:R.layout.drop_item
ArrayAdapter<String>  myArrayAdapter = new ArrayAdapter<String>(this,R.layout.drop_item,array);
//设置列表框item的布局
myArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//设置适配器
dialogSp.setAdapter(myArrayAdapter);
//设置监听
dialogSp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
/*
* parent:指示spinner
* view:显示item的空间,这里指TextView
* position:被选中的item的位置
* id:选中项的id
* */
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (!firstSelect)
{
//打印提示,parent.getItemAtPosition(position)获取选中位置的值
Toast.makeText(SecondActivity.this,"你选择了:"+parent.getItemAtPosition(position).toString(),
Toast.LENGTH_SHORT).show();
Log.d("id",id+"");
Log.d("position",position+"");
Log.d("view",view.toString());
Log.d("parent",parent.toString());
}else {
firstSelect=false;
}

}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});
}
}


    4)从xml文件加载数据适配
ArrayAdapter<CharSequence> myArrayAdapter = ArrayAdapter.createFromResource(this, R.array.myarraydata,
android.R.layout.simple_spinner_item);


    5)效果截图



5.自定义adapter+数据源+布局实现Spinner

    1)自定义adapter,MyCustomAdapter.java

 
package com.example.spinnerui;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
* Created by elimy on 2016-08-10.
*/
public class MyCustomAdapter extends BaseAdapter {
private Context context;
private List<Map<String,Object>> list;
private LayoutInflater inflater;
/*
*带参构造方法
*/
public MyCustomAdapter(List<Map<String, Object>> list, Context context) {
this.list = list;
this.context = context;
inflater =LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int position) {
return position;
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder =null;
if (holder == null){
holder=new ViewHolder();
if(convertView ==null){
convertView=inflater.inflate(R.layout.custom_drop_layout,null);
holder.imageView = (ImageView) convertView.findViewById(R.id.app_icon);
holder.appText = (TextView) convertView.findViewById(R.id.list_item);
holder.descText = (TextView) convertView.findViewById(R.id.list_desc);
convertView.setTag(holder);
}else {
//根据Tag获取已经存在的ViewHolder
holder = (ViewHolder) convertView.getTag();
}
//设置显示内容
holder.appText.setText(list.get(position).get("name").toString());
holder.descText.setText(list.get(position).get("desc").toString());
holder.imageView.setBackgroundResource((Integer)list.get(position).get("image"));
}

return convertView;
}
/*
*实现ViewHolder类
*/
class ViewHolder{
public ImageView imageView;
public TextView appText;
public TextView descText;
}
}
  

    

    2)每个下拉列表item布局custom_drop_layout.xml

   
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.spinnerui.ThreeActivity">
<ImageView
android:id="@+id/app_icon"
android:background="@drawable/camera"
android:layout_width="50dp"
android:layout_height="50dp" />

<TextView android:id="@+id/list_item"
android:gravity="center"
android:textSize="24sp"
android:paddingLeft="20dp"
android:layout_toRightOf="@id/app_icon"
android:layout_width="wrap_content"
android:text="app name"
android:layout_height="wrap_content" />
<TextView android:id="@+id/list_desc"
android:gravity="center"
android:textSize="14sp"
android:paddingLeft="20dp"
android:layout_below="@id/list_item"
android:layout_toRightOf="@id/app_icon"
android:layout_width="wrap_content"
android:singleLine="true"
android:text="app describe"
android:layout_height="wrap_content" />

</RelativeLayout>
   

    3)主布局xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.spinnerui.ThreeActivity">

<Spinner
android:id="@+id/dropdownSp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:dropDownHorizontalOffset="20dp"
android:dropDownVerticalOffset="5dp"
>

</Spinner>
</RelativeLayout>
 

    4)主布局Java文件ThreeActivity.java
package com.example.spinnerui;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class ThreeActivity extends AppCompatActivity {
private Spinner dropdownSp;
private ArrayList<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
private Map<String,Object> map;

private boolean firstSelect=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_three);
//初始化
dropdownSp= (Spinner) findViewById(R.id.dropdownSp);
//初始化自定义adapter
list=getData();
MyCustomAdapter myCustomAdapter = new MyCustomAdapter(list,ThreeActivity.this);
dropdownSp.setAdapter(myCustomAdapter);
//设置监听
dropdownSp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
/*
* parent:指示spinner
* view:显示item的空间,这里指TextView
* position:被选中的item的位置
* id:选中项的id
* */
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (!firstSelect)
{
//打印提示,parent.getItemAtPosition(position)获取选中位置的值
Toast.makeText(ThreeActivity.this,"你选择了:"+list.get(position).get("name").toString(),
Toast.LENGTH_SHORT).show();
Log.d("id",id+"");
Log.d("position",position+"");
Log.d("view",view.toString());
Log.d("parent",parent.toString());
}else {
firstSelect=false;
}

}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});
}
/*
初始化数据源
*/
private ArrayList<Map<String,Object>> getData() {
map=new HashMap<String, Object>();
map.put("image",R.drawable.calendar);
map.put("name","日历");
map.put("desc","这是一款超级时尚的日历APP");
list.add(map);
map=new HashMap<String, Object>();
map.put("image",R.drawable.camera);
map.put("name","相机");
map.put("desc","完美美颜,美美哒");
list.add(map);
map=new HashMap<String, Object>();
map.put("image",R.drawable.clock);
map.put("name","闹钟");
map.put("desc","妈妈再也不担心你睡懒觉啦");
list.add(map);
map=new HashMap<String, Object>();
map.put("image",R.drawable.games_control);
map.put("name","游戏控制");
map.put("desc","游戏尽在掌握");
list.add(map);
return list;
}
}
 

    5)效果截图

 

   

6.多级连联动Spinner实现(市县区三级联动)

    1)数据spinner_array_data.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="province_data">
<item>上海</item>
<item>湖南</item>
<item>浙江</item>
<item>四川</item>
</string-array>
<!--上海市县区数据-->
<string-array name="shanghai_city_data">
<item>黄浦区</item>
<item>长宁区</item>
<item>虹口区</item>
<item>浦东新区</item>
</string-array>
<array name="huangpu_county_data">
<item>南京东路街道</item>
<item>外滩街道</item>
<item>半淞园路街道</item>
</array>
<array name="changning_county_data">
<item>华阳路街道</item>
<item>江苏路街道</item>
<item>新华路街道</item>
</array>
<array name="hongkou_county_data">
<item>欧阳路街道</item>
<item>曲阳路街道</item>
<item>广中路街道</item>
</array>
<array name="pudong_county_data">
<item>潍坊新村街道</item>
<item>陆家嘴街道</item>
<item>周家渡街道</item>
</array>
<!--湖南省市县区数据-->
<array name="hunan_city_data">
<item>长沙市</item>
<item>湘潭市</item>
<item>衡阳市</item>
<item>岳阳市</item>
</array>
<array name="xiangtan_county_data">
<item>雨湖区</item>
<item>岳塘区</item>
<item>湘潭县</item>
</array>
<array name="changsha_county_data">
<item>天心区</item>
<item>芙蓉区</item>
<item>长沙县</item>
</array>
<array name="hengyang_county_data">
<item>珠晖区</item>
<item>雁峰区</item>
<item>石鼓区</item>
</array>
<array name="yueyang_county_data">
<item>岳阳楼区</item>
<item>云溪区</item>
<item>君山区</item>
</array>

<!--四川省市县区数据-->
<array name="sichuan_city_data">
<item>成都市</item>
<item>雅安市</item>
<item>乐山市</item>
<item>资阳市</item>
</array>
<array name="chengdu_county_data">
<item>高新区</item>
<item>金牛区</item>
<item>青羊区</item>
</array>
<array name="yaan_county_data">
<item>宝兴县</item>
<item>小金县</item>
<item>芦山县</item>
</array>

<array name="leshang_county_data">
<item>市中区</item>
<item>沙湾区</item>
<item>五通桥区</item>
</array>
<array name="ziyang_county_data">
<item>雁江区</item>
<item>安岳县</item>
<item>乐至县</item>
</array>

<!--浙江省市县区数据-->
<array name="zhejiang_city_data">
<item>杭州市</item>
<item>温州市</item>
<item>宁波市</item>
<item>嘉兴市</item>
</array>
<array name="hangzhou_county_data">
<item>下城区</item>
<item>江干区</item>
<item>西湖区</item>
</array>
<array name="wenzhou_county_data">
<item>鹿城区</item>
<item>龙湾区</item>
<item>瓯海区</item>
</array>
<array name="ningbo_county_data">
<item>海曙区</item>
<item>江东区</item>
<item>江北区</item>
</array>
<array name="jiaxing_county_data">
<item>南湖区</item>
<item>秀洲区</item>
<item>嘉善县</item>
</array>
</resources>
  

    2)主布局activity_four.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.spinnerui.FourActivity">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="@string/province"/>
<Spinner
android:id="@+id/provinceSpinner"
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:textSize="18sp"
android:dropDownHorizontalOffset="20dp"
android:dropDownVerticalOffset="5dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="@string/city"/>
<Spinner
android:layout_marginLeft="20dp"
android:id="@+id/citySpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:textSize="18sp"
android:dropDownHorizontalOffset="20dp"
android:dropDownVerticalOffset="5dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:textSize="18sp"
android:layout_height="wrap_content"
android:text="@string/county"/>
<Spinner
android:id="@+id/countySpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:textSize="18sp"
android:layout_marginLeft="20dp"
android:dropDownHorizontalOffset="20dp"
android:dropDownVerticalOffset="5dp"
/>
</LinearLayout>
<TextView
android:id="@+id/result"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:textSize="18sp"
android:layout_height="wrap_content"
android:text="结果"/>

</LinearLayout>


    3)主布局java文件FourActivity.java
package com.example.spinnerui;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
/**
* 注意:在初始化int[]数组的时候,注意city数组中的数据index要与province array.xml中的顺序要一致,county数组也是
* 同样的道理,这样才可以实现省份和城市数据对应,城市和县区数据对应。
* ps:提供另一种思路就是将county数据设置为二维数组,对应分别对应省份和城市
* */
public class FourActivity extends AppCompatActivity {
private Spinner provinceSpinner, citySpinner, countySpinner;
private ArrayAdapter<CharSequence> provinceAdapter, cityAdapter, countyAdapter;
private TextView result;
private String provinceName, cityName, countyName;
private boolean firstSelect = true;
//省份对应的城市数组初始化,将城市数组和省份的positon关联起来
int[] cityofprovince = {
R.array.shanghai_city_data, R.array.hunan_city_data,
R.array.zhejiang_city_data, R.array.sichuan_city_data
};
//城市对应的区县数组初始化,将县区和城市positon关联起来
int[] shanghaicityofcounty = {
R.array.huangpu_county_data, R.array.changning_county_data,
R.array.hongkou_county_data, R.array.pudong_county_data
};
int[] hunancityofcounty = {
R.array.changsha_county_data, R.array.xiangtan_county_data,
R.array.hengyang_county_data, R.array.yueyang_county_data
};
int[] zhejiangcityofcounty = {
R.array.hangzhou_county_data, R.array.wenzhou_county_data,
R.array.ningbo_county_data, R.array.jiaxing_county_data
};
int[] sichuancityofcounty = {
R.array.chengdu_county_data, R.array.yaan_county_data,
R.array.leshang_county_data, R.array.ziyang_county_data
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_four);
//实例化spinner
provinceSpinner = (Spinner) findViewById(R.id.provinceSpinner);
citySpinner = (Spinner) findViewById(R.id.citySpinner);
countySpinner = (Spinner) findViewById(R.id.countySpinner);
result = (TextView) findViewById(R.id.result);
//从xml文件资源中实例化provinceAdapter
provinceAdapter = ArrayAdapter.createFromResource(FourActivity.this, R.array.province_data, android.R.layout.simple_spinner_item);
//设置下拉列表布局,android.R.layout.simple_spinner_dropdown_item android内置的布局
provinceAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//设置适配器
provinceSpinner.setAdapter(provinceAdapter);
//省级spinner添加监听事件
provinceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
provinceName = provinceSpinner.getSelectedItem().toString();
final int provinceId = provinceSpinner.getSelectedItemPosition();
Log.d("debug:", provinceName + "+" + provinceId);
//根据选取province的position从一开始的int数组中动态适配相应的city数据
if(true){
cityAdapter = ArrayAdapter.createFromResource(FourActivity.this, cityofprovince[position], android.R.layout.simple_spinner_item);
cityAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
citySpinner.setAdapter(cityAdapter);
//设置select事件监听
citySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//获取选中item的文本
cityName = citySpinner.getSelectedItem().toString();
//获取选中position
int cityId = citySpinner.getSelectedItemPosition();
Log.d("debug:", cityName + "+" + cityId);
switch (provinceId) {
case 0:
setAdapterFun(shanghaicityofcounty[cityId]);
break;
case 1:
setAdapterFun(hunancityofcounty[cityId]);
break;
case 2:
setAdapterFun(zhejiangcityofcounty[cityId]);
break;
case 3:
setAdapterFun(sichuancityofcounty[cityId]);
break;
default:
break;
}
//为countySpinner设置监听器
countySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//根据位置获取文本内容
countyName = countySpinner.getSelectedItem().toString();
Log.d("debug:", countyName + "+" + countyName);
result.setText("你的选择是:"+provinceName+"—>"+cityName+"—>"+countyName);

}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});
}
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});
}
/*
function:功能主要是采取通用的方式为Spinner设置不同的数据
* @param: i 表示对应数据数组的id值
* */

private void setAdapterFun(int i) {
//通过xml文件初始化ArrayAdapter
countyAdapter = ArrayAdapter.createFromResource(FourActivity.this, i, android.R.layout.simple_spinner_item);
//设置下拉列表框布局
countyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//为countySpinner设置适配器
countySpinner.setAdapter(countyAdapter);
}

}
  
    4)效果截图



   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息