赞
踩
在Android中,官方为我们提供了用来实现下拉列表的组件Spinner,我们使用这个组件就可以完成下拉列表的创建。
静态创建就是在布局文件中使用 android:entries属性指定下拉列表数据的存放文件,这样就不需要在代码中进行任何操作,即可创建下拉列表。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".TestActivity2" android:orientation="vertical"> <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@array/spinner1"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="分割"/> <Spinner android:id="@+id/spinner2" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
spinner1.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="spinner">
<item>北京</item>
<item>上海</item>
<item>深圳</item>
</string-array>
</resources>
动态创建就是在代码中指定下拉列表的数据。data_list是存放数据的列表。
/** * 动态创建下拉列表 */ public void createSpinner2() { spinner = findViewById(R.id.spinner2); data_list = new ArrayList<>(); data_list.add("北京"); data_list.add("上海"); data_list.add("广州"); data_list.add("深圳"); //适配器 arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,data_list); //设置样式 arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); //加载适配器 spinner.setAdapter(arr_adapter); }
多级联动实现的要点在于选择了第一级以后,需要自动在第二级设置出对应的数据。
在布局文件中添加以下代码
<TextView
android:id="@+id/spinner3"
android:layout_width="match_parent"
android:layout_height="100dp"
android:text="以下是三级联动"/>
<Spinner
android:id="@+id/spinner4"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Spinner
android:id="@+id/spinner5"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
/** * 二级联动 */ public void createSpinner3() { spinner4 = findViewById(R.id.spinner4); spinner5 = findViewById(R.id.spinner5); ArrayList<String> data4 = new ArrayList<>(); data4.add("北京"); data4.add("上海"); data4.add("深圳"); //设置第一级的数据 adapter4 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,data4); adapter4.setDropDownViewResource(android.R.layout.simple_spinner_item); spinner4.setAdapter(adapter4); //给第一级设置选项选中事件 spinner4.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Log.d(TAG, "onItemClick: " + adapter4.getItem(position)); Log.d(TAG, "onItemClick: " + data4.get(position)); //判断被选中的是第一级的哪个数据,然后设置对应的数据 if ("北京".equals(data4.get(position))) { //将数据绑定到选中的选项上 adapter5 = ArrayAdapter.createFromResource(TestActivity2.this, R.array.bj, android.R.layout.simple_spinner_item); spinner5.setAdapter(adapter5); } else if ("上海".equals(data4.get(position))) { adapter5 = ArrayAdapter.createFromResource(TestActivity2.this, R.array.sh, android.R.layout.simple_spinner_item); spinner5.setAdapter(adapter5); } else { adapter5 = ArrayAdapter.createFromResource(TestActivity2.this, R.array.sz, android.R.layout.simple_spinner_item); spinner5.setAdapter(adapter5); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); }
sz.xml文件,此文件在values目录下创建。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="sz">
<item>南山区</item>
<item>龙岗区</item>
<item>福田区</item>
</string-array>
</resources>
bj.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="bj">
<item>大兴区</item>
<item>怀柔区</item>
<item>通州区</item>
</string-array>
</resources>
sh.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="sh">
<item>奉贤区</item>
<item>黄埔区</item>
<item>青浦区</item>
</string-array>
</resources>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。