扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章主要介绍Android如何实现联动下拉框二级地市联动下拉框功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联公司基于十年网站建设行业经验,一直致力于为中小型企业提供信息化解决方案,创新互联公司做到开放、开源,让企业所有核心数据掌握到企业手里,打破行业乱象,让企业被网络公司掌控的局面不再发生;美工设计部,产品/程序研发部,营销策划部,售后客服部。一切服务为企业量身定制,专注为您!
日常使用软件中,为了方便且规范输入,会使用到下拉框进行输入,如注册时生日选项,购物时的地址输入,都会用到下拉框,今日笔者为了巩固已学的知识,实现了二级联动下拉框用作回顾及分享给求知的新手。
思路/步骤:
在实现联动下拉框之前,我们先对用到的ArrayAdapter和数据的封装作必要的了解,Android 中提供了很多适配器的实现类,其中ArrayAdapter就其中之一。它可以通过泛型来指定要适配的数据类型,然后在构造函数中把要适配的数据传入。如:
ArrayAdapteradapter = ArrayAdapter.createFromResource( getApplicationContext(), R.array.province, android.R.layout.simple_spinner_item);
ArrayAdapter中比较常用的泛型是String,但此处用了CharSequence(字符序列),通过指定泛型来装配适合的数据类型。
这段代码中有三个参数:
第一个参数Context是上下文,就是当前的Activity。
第二个参数是数据来源,R.array.province是存储在xml文件中的数据。
第三个参数是Android SDK中内置的一个TextView。(此xml文件中只有一个TextView)。
通过创建一个ArrayAdapter处理存储在xml中的省份地市数据,用Spinner控件处理ArrayAdapter处理好的数据,用TextView将数据显示出来形成一个list供用户点击选择。
主要实现代码: MainActivity.java
import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends Activity { Spinner spinner1, spinner2;//声明两个下拉框 String City, Province; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner1 = (Spinner) findViewById(R.id.spinner1);//绑定ID spinner2 = (Spinner) findViewById(R.id.spinner2);//绑定ID ArrayAdapteradapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.province, android.R.layout.simple_spinner_item);//创建资源 spinner1.setAdapter(adapter);//装配数据 spinner1.setOnItemSelectedListener(new provinceClickListen());//监听事件 spinner2.setOnItemSelectedListener(new CityClickListen());//监听事件 } class provinceClickListen implements OnItemSelectedListener { public void onItemSelected(AdapterView> parent, View v, int i, long l) { Spinner spinner = (Spinner) parent; String pro = (String) spinner.getItemAtPosition(i);//获取当前选中项 ArrayAdapter adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.def, R.layout.item);//初始化 Province = spinner1.getSelectedItem().toString();//当前选中的省份 /** 根据省份,装配地市数据**/ if (pro.equals("北京")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.北京, R.layout.item); } else if (pro.equals("天津")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.天津, R.layout.item); } else if (pro.equals("河北")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.河北, R.layout.item); } else if (pro.equals("山西")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.山西, R.layout.item); } else if (pro.equals("内蒙古")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.内蒙古, R.layout.item); } else if (pro.equals("辽宁")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.辽宁, R.layout.item); } else if (pro.equals("吉林")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.吉林, R.layout.item); } else if (pro.equals("黑龙江")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.黑龙江, R.layout.item); } else if (pro.equals("上海")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.上海, R.layout.item); } else if (pro.equals("江苏")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.江苏, R.layout.item); } else if (pro.equals("浙江")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.浙江, R.layout.item); } else if (pro.equals("安徽")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.安徽, R.layout.item); } else if (pro.equals("福建")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.福建, R.layout.item); } else if (pro.equals("江西")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.江西, R.layout.item); } else if (pro.equals("山东")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.山东, R.layout.item); } else if (pro.equals("河南")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.河南, R.layout.item); } else if (pro.equals("湖北")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.湖北, R.layout.item); } else if (pro.equals("湖南")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.湖南, R.layout.item); } else if (pro.equals("广东")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.广东, R.layout.item); } else if (pro.equals("广西")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.广西, R.layout.item); } else if (pro.equals("海南")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.海南, R.layout.item); } else if (pro.equals("重庆")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.重庆, R.layout.item); } else if (pro.equals("四川")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.四川, R.layout.item); } else if (pro.equals("贵州")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.贵州, R.layout.item); } else if (pro.equals("云南")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.云南, R.layout.item); } else if (pro.equals("西藏")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.西藏, R.layout.item); } else if (pro.equals("陕西")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.陕西, R.layout.item); } else if (pro.equals("甘肃")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.甘肃, R.layout.item); } else if (pro.equals("青海")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.青海, R.layout.item); } else if (pro.equals("宁夏")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.宁夏, R.layout.item); } else if (pro.equals("新疆")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.新疆, R.layout.item); } else if (pro.equals("台湾")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.台湾, R.layout.item); } else if (pro.equals("香港")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.香港, R.layout.item); } else if (pro.equals("澳门")) { adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.澳门, R.layout.item); } spinner2.setAdapter(adapter);//装配地市数据 } public void onNothingSelected(AdapterView> parent) { } } class CityClickListen implements OnItemSelectedListener { public void onItemSelected(AdapterView> parent, View v, int i, long l) { City = spinner2.getSelectedItem().toString();//当前选中的地市 if (City.equals("-城市-")) {//当前还没选择地市 } else { Toast.makeText(getApplicationContext(), Province+"省"+City, Toast.LENGTH_LONG).show();//Toast显示选中的省份城市 } } public void onNothingSelected(AdapterView> parent) {} } public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
此外还有布局文件: activity_main.xml
item.xml
实现效果如下:
以上是“Android如何实现联动下拉框二级地市联动下拉框功能”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流