Android-Spinner的Listenner事件及菜单级联

来源:互联网 发布:软件视频会议系统 编辑:程序博客网 时间:2024/06/06 09:07

前几天刚刚分享了Spinner的使用方法,但并没有实现Spinner的选择事件,即没有为Spinner设置监听器。正好现在做点小东西需要用到Spinner,就认真的把Spinner好好学了一下,学会了对Spinner的监听事件出来,在此记录下来,与大家分享。

因为Android的控件使用的效果对每个人的需求来说都不一样,在此只是简单的实现最基本的事件处理,只为了今后需要的时候能回过头来重新学习而已。

首先现在布局文件里面添加一个TextView(显示提示信息)和一个Spinner。

<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:orientation="vertical"    tools:context=".MainActivity" >    <TextView        android:id="@+id/showinfo"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="你喜欢的水果:" />    <Spinner        android:id="@+id/spinner"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:prompt="@string/prompt"        android:entries="@array/fruit"/>    </LinearLayout>
在java文件中取得组件,定义与写事件监听器并绑定,需要实现一个接口:OnItemSelectedListener()。

public class MainActivity extends Activity {private TextView showinfo = null;private Spinner spinner = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);showinfo = (TextView) findViewById(R.id.showinfo);spinner = (Spinner) findViewById(R.id.spinner);spinner.setOnItemSelectedListener(new spinnerSelectedListenner());//绑定事件监听}private class spinnerSelectedListenner implements OnItemSelectedListener{@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {         //望文生义,当列表项被选择时// TODO Auto-generated method stubString select = parent.getItemAtPosition(position).toString();//取得被选中的列表项的文字showinfo.setText("你喜欢的水果:"+select);}@Overridepublic void onNothingSelected(AdapterView<?> parent) {// TODO Auto-generated method stub}}}

第二部分是实现Spinner列表的级联,即Spinner之下再嵌套一个Spinner。

 <Spinner        android:id="@+id/spinner"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:prompt="@string/prompt"        android:entries="@array/fruit"/>    <Spinner        android:id="@+id/spinner2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:prompt="@string/prompt2"/>
因为第二级spinner对应一级spinner都含有不同的内容,所以不好在xml布局文件盒资源文件中定义添加。所以需要在java文件进行添加

public class MainActivity extends Activity {private TextView showinfo = null;private Spinner spinner = null;private Spinner spinner2 = null;private ArrayAdapter<CharSequence> dataAdapter = null;// 定义二级spinner内容private String[][] juiceData = new String[][] { { "苹果汁1", "苹果汁2", "苹果汁3" },{ "荔枝1", "荔枝2", "荔枝3", }, { "葡萄1", "葡萄2" }, { "西瓜汁" } };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);showinfo = (TextView) findViewById(R.id.showinfo);spinner = (Spinner) findViewById(R.id.spinner);spinner2 = (Spinner) findViewById(R.id.spinner2);spinner.setOnItemSelectedListener(new spinnerSelectedListenner());// 绑定事件监听}private class spinnerSelectedListenner implements OnItemSelectedListener {@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) { // 望文生义,当列表项被选择时// TODO Auto-generated method stubdataAdapter = new ArrayAdapter<CharSequence>(MainActivity.this,android.R.layout.simple_spinner_item, juiceData[position]);// 所有列表项dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// 设置显示风格spinner2.setAdapter(dataAdapter);// 添加二级菜单}@Overridepublic void onNothingSelected(AdapterView<?> parent) {// TODO Auto-generated method stub}}}
实现的结果就是当第一级spinner选择“荔枝”时,二级spinner会默认选择“荔枝”项里的第一项,即荔枝1。其他同理。在二级菜单中选择时,第一级的选择不会改变。就这样,简单的实现了Spinner的级联。虽然效果很简单,但是复杂的东西都是从简单的东西开始的,只要理解了,复杂的东西也就能做出来了。

关于Spinner的显示方法也在前面的前面文章详细说明了,关于如何在资源文件中配置Spinner的内容就不赘述了。

好了,去看《爸爸去哪儿》啦。

0 0
原创粉丝点击