Android中使用Spinner来实现图标文字并存的二级联动
2017-06-11 16:47
549 查看
安卓中实现二级联动的样子
效果图:
实现思路:
通过spinner控件,在java代码中去把你要展示的信息存放到map集合中,接着设置适配器,设置省的监听事件,根据键去拿值,再次设置适配器
代码:
activity_spinner.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<!--TextView标签与Spinner标签-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="省份:"
/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/s_spinner_spinner1"
></Spinner>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="城市:"
/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/s_spinner_spinner2"
></Spinner>
</LinearLayout>SpinnerActivity:
效果图:
实现思路:
通过spinner控件,在java代码中去把你要展示的信息存放到map集合中,接着设置适配器,设置省的监听事件,根据键去拿值,再次设置适配器
代码:
activity_spinner.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<!--TextView标签与Spinner标签-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="省份:"
/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/s_spinner_spinner1"
></Spinner>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="城市:"
/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/s_spinner_spinner2"
></Spinner>
</LinearLayout>SpinnerActivity:
package com.example.g160628_android07_widget; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.Spinner; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by Administrator on 2017/6/11. */ public class SpinnerActivity extends AppCompatActivity{ private Spinner s_spinner_spinner1;//省的Spinner private Spinner s_spinner_spinner2;//市的Spinner private SimpleAdapter adapter1;//省的SimpleAdapter适配器 private SimpleAdapter adapter2;//市的SimpleAdapter适配器 private Map<Object, List> map;//用来装所有图标集合的map集合 private List<Map<String, Object>> list_pro;//省的集合 @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_spinner); //实例化一个Map<Object, List>集合 map = new HashMap<>(); //配对省市的Spinner s_spinner_spinner1 = (Spinner) findViewById(R.id.s_spinner_spinner1); s_spinner_spinner2 = (Spinner) findViewById(R.id.s_spinner_spinner2); //省的数组 String[] provinces={"湖南省","广东省","云南省"}; //图标,通过从drawable中获取 int images[]={R.drawable.bird,R.drawable.cat,R.drawable.chicken}; //实例化省的集合,把图标什么的都放到list中 list_pro = new ArrayList<>(); for (int i = 0; i < provinces.length; i++) { Map<String,Object> map=new HashMap<>(); map.put("image",images[i]); map.put("title",provinces[i]); list_pro.add(map); } //湖南省的市 String[] pro_hunan={"长沙市","娄底市","新邵市"}; List<Map<String,Object>> list_pro_hunan=new ArrayList<>(); for (int i = 0; i < pro_hunan.length; i++) { Map<String,Object> map=new HashMap<>(); map.put("image",images[i]); map.put("title",pro_hunan[i]); list_pro_hunan.add(map); } String[] pro_guangdong={"东莞市","深圳市","佛山市"}; List<Map<String,Object>> list_pro_guangdong=new ArrayList<>(); for (int i = 0; i < pro_guangdong.length; i++) { Map<String,Object> map=new HashMap<>(); map.put("image",images[i]); map.put("title",pro_guangdong[i]); list_pro_guangdong.add(map); } String[] pro_yunnan={"临沧市","昆明市","丽江市"}; List<Map<String,Object>> list_pro_yunnan=new ArrayList<>(); for (int i = 0; i < pro_yunnan.length; i++) { Map<String,Object> map=new HashMap<>(); map.put("image",images[i]); map.put("title",pro_yunnan[i]); list_pro_yunnan.add(map); } //把城市和对应的省份装置到map集合中 map.put(list_pro.get(0),list_pro_hunan); map.put(list_pro.get(1),list_pro_guangdong); map.put(list_pro.get(2),list_pro_yunnan); //给省和市设置适配器 adapter1 = new SimpleAdapter(SpinnerActivity.this, list_pro,android.R.layout.activity_list_item,new String[]{"image","title"},new int[]{android.R.id.icon,android.R.id.text1}); s_spinner_spinner1.setAdapter(adapter1); adapter2 = new SimpleAdapter(SpinnerActivity.this,list_pro_hunan,android.R.layout.activity_list_item,new String[]{"image","title"},new int[]{android.R.id.icon,android.R.id.text1}); s_spinner_spinner2.setAdapter(adapter2); //设置省的选择监听事件,配置每个省对应的市 s_spinner_spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //获得选择到的省list_pro集合中的值 Object o= list_pro.get(position); //适配器中的参数: //1:哪个上下文 //2:集合——(根据map集合中的键获得集合) //3:样式:我这里写的是系统中的样式,也可以放自己写的 //4:new String[]{},中间的参数是控件 //5:new int[]{},参数是控件的类型 adapter2 = new SimpleAdapter(SpinnerActivity.this,map.get(o),android.R.layout.activity_list_item,new String[]{"image","title"},new int[]{android.R.id.icon,android.R.id.text1}); s_spinner_spinner2.setAdapter(adapter2); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } }今天就整理到这里了,欢迎指点!
相关文章推荐
- Android之单复选框及Spinner实现二级联动
- android Spinner实现一个二级联动的下拉列表,选定省份后,城市的下拉列表出现相应变化
- Android Spinner实现二级联动
- Android 的 Spinner下拉菜单如何实现 和二级以上的三级联动 (一)
- Android 的 Spinner下拉菜单如何实现 和二级以上的三级联动 (二)
- 使用angularjs实现二级联动需要注意的问题如下
- jquery使用jquerydoubleselectmin.js实现二级菜单联动
- Android开发技巧——实现底部图标文字的导航栏(已更新)
- Android实现三级联动下拉框 下拉列表spinner
- picker控件详解与使用,(实现省市的二级联动)
- Android横向二级联动菜单的实现
- Android开发实现二级联动下拉列表
- 使用vue框架实现部门大区二级联动
- Android实现三级联动下拉框 下拉列表spinner的实例代码
- android中利用实现二级联动的效果
- 在laravel中使用ajax实现二级联动
- Android开发技巧——实现底部图标文字的导航栏(已更新)
- Android实现底部图标与Fragment的联动实例
- Android横向二级联动菜单的实现
- Android UI控件之Spinner实现省市区三级联动