Spinner的使用
Spinner在普通状态下不会将所有的选项展示在界面上,只有当其被单击后才显示,这样就减少了组建在界面中占用的面积,从而使得界面布局更加灵活
常用属性和方法:
属性: 方法 说明
Android:entries 设置选项
getCount() 获取选项总数
setOnItemClickListener(AdapterView.OnItemClickListenerl) 注册单击监听器,当选项不支持单击事件时,将会抛出异常
setOnItemSelectedListener(AdapterView.OnItemSelectedListenerl) 注册选择监听器
setAdapter(SpinnerAdapter adapter) 设置数据适配器
setSelection(intposition) 设置被选中的选项
android:pormpt
setPromptId(intpromptId) 设置选项标题
建立一个Spinner的步骤:
1. 在布局文件当中声明Spinner控件
2. 在Strings.xml当中声明一个数组
3. 创建一个ArrayAdapter
4. 得到Spinner对象,并设置数据
5. 创建一个监听器
6. 绑定监听器
主界面布局资源代码main.xml(res/layout/main.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"
>
<Spinner
android:id="@+id/spinnerId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Spinner选项的代码资源string.xml(res/values/strings.xml)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">SpinnerTest</string>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
<item>Jupiter</item>
<item>Saturn</item>
<item>Uranus</item>
<item>Neptune</item>
</string-array>
</resources>
主界面MainActivity代码:
package com.hjx.spinner;
import android.app.Activity;
import android.os.Bundle;
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 {
/** Called when the activity is first created. */
private Spinner spinner=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
spinner=(Spinner)findViewById(R.id.spinnerId);
//通过createFromResource方法创建一个ArrayAdapter对象
//第一个参数是上下文对象
//第二个参数应用在string.xml文件当中定义的String数组
//第三个参数是用来指定Spinner的样式,是一个布局文件ID,该布局文件由Android系统提供,也可以替换为自己定义的布局文件
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.planets_array, android.R.layout.simple_spinner_item);
//设置Spinner当中每个条目的样式,同样是引用一个Android系统提供的布局文件
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setPrompt("测试");
spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());
}
class SpinnerOnSelectedListener implements OnItemSelectedListener{
@Override
public void onItemSelected(AdapterView<?> adpaterView,View view, int position, long id) {
String selected =adpaterView.getItemAtPosition(position).toString();
System.out.println(selected);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
// nothing to do
System.out.println("NothingSelected");
}
}
}
运行效果: