spinner使用的5个步骤
1、在布局文件中声明Spinner控件
2、创建ArrayAdapter,
(1)在res/values/String.xml中声明下拉菜单的数组,然后通过CreateFromResource()方法创建
(2)动态的在java代码里创建,调动ArrayAdapter的构造函数
3、在spinner上绑定adapter
4、写个监听器的类--实现OnItemSelectedListener接口
5、在spinner上绑定这个监听器
具体代码如下:
MainActivity.java
package com.example.s02_e01_spinner;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
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;
public class MainActivity extends Activity {
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner=(Spinner)findViewById(R.id.spinnerId);
//新建适配器有两种方法:1是通过createFromResource方法创建ArrayAdapter对象,先 在res/values下的String.xml中声明,这里引用该资源;
//android.R.layout.simple_spinner_item android.R.layout.simple_dropdown_item_1line都是系统里的样式,也可以自定义
ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this, R.array.my_family,
android.R.layout.simple_spinner_item);//括号里的参数详见帮助文档
//设置适配器的下拉样式
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
//2调用ArrayAdapter的构造函数动态的创建Arraydapter对象
//上面第一个参数:this,上下文对象;
//第2个参数:指定了下拉菜单中每一个条目的样式(样式风格写在Relativelayout的属性里)
//第3个参数:指定了这个list是显示在所在布局文件中的某控件的Id。item.xml的布局文件可有多个控件
//第4个参数:为整个列表提供的数据
//在spinner上添加上面剑豪的适配器
spinner.setAdapter(adapter);
//下面这条可有有个前提:activity_main.xml文件中设置android:spinnerMode="dialog",这个属性有两个可选(dialog和dropdown)
spinner.setPrompt("成员");
//在spinner上绑定监听器
spinner.setOnItemSelectedListener(new SpinnerOnItemSelectedListener());
}
class SpinnerOnItemSelectedListener implements OnItemSelectedListener{
@Override
public void onItemSelected(AdapterView<?> adapterview, View view, int postion,
long id) {
String selected=adapterview.getItemAtPosition(postion).toString();
System.out.println(selected);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
System.out.println("you have chosed nothing");
//这里没有看到效果???
}
}
@Override
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
<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=".MainActivity" >
<Spinner
android:id="@+id/spinnerId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dialog"
/>
</RelativeLayout>
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">S02_E01_Spinner</string>
<string name="action_settings">Settings</string>
<string-array name="my_family">
<item >葫芦娃</item>
<item >玉华</item>
<item >吉轩</item>
</string-array>
</resources>
item.xml
<?xml version="1.0" encoding="UTF-8"?><LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ff0000"
>
<TextView
android:id="@+id/textViewId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00ff00"
/>
</LinearLayout>