spinners 提供一种从一组选项中快速的选择一个。在默认状态下,spinner显示当前的默认值,触摸spinner组件的话,会显示一个下来菜单,提供所有可以选择的值,供用户选择一个新的选项.
你可以在layout文件中添加spinner组件,如下所示。
<Spinner
android:id="@+id/planets_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
当时spinner的下来菜单中的选项是从哪里来的呢?答案是从spinnerAdapter中来.如果可选项是以数组的方式提供,一般使用arrayAdapt,如果是一个数据库的方式提供,则使用CursorAdapter.下面我们看一个arrayAdapt的例子
一般现在资源文件中添加一个字符数组,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<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>
然后可以在你的activity 中找到spinner组件并设定它的adapt,code如下所示:
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);
createFromResource 运行你从字符数组中创建一个ArrayAdapt.android.R.layout.simple_spinner_item sh是由Android 系统提供的,表示字符数组中的每一项在spinner中的样式.
还需要调用setDropDownViewResource(int)来指定显示spinner 选项list中的layout adapt.
最后调用spinner.setAdapter(adapter);来设定adapt.
那我们是怎么知道当前用户选择spinner中的哪一项呢?
这就需要我们实现 AdapterView.OnItemSelectedListener接口,如下所示:
public class SpinnerActivity extends Activity implements OnItemSelectedListener {
...
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
// An item was selected. You can retrieve the selected item using
// parent.getItemAtPosition(pos)
}
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
}
这时就可以通过pos 获得用户选择array中的哪一项
最后就要setOnItemSelectedListener 来告诉spinner这个实现这个接口的毁掉函数.
Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);
你可以在layout文件中添加spinner组件,如下所示。
<Spinner
android:id="@+id/planets_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
当时spinner的下来菜单中的选项是从哪里来的呢?答案是从spinnerAdapter中来.如果可选项是以数组的方式提供,一般使用arrayAdapt,如果是一个数据库的方式提供,则使用CursorAdapter.下面我们看一个arrayAdapt的例子
一般现在资源文件中添加一个字符数组,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<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>
然后可以在你的activity 中找到spinner组件并设定它的adapt,code如下所示:
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);
createFromResource 运行你从字符数组中创建一个ArrayAdapt.android.R.layout.simple_spinner_item sh是由Android 系统提供的,表示字符数组中的每一项在spinner中的样式.
还需要调用setDropDownViewResource(int)来指定显示spinner 选项list中的layout adapt.
最后调用spinner.setAdapter(adapter);来设定adapt.
那我们是怎么知道当前用户选择spinner中的哪一项呢?
这就需要我们实现 AdapterView.OnItemSelectedListener接口,如下所示:
public class SpinnerActivity extends Activity implements OnItemSelectedListener {
...
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
// An item was selected. You can retrieve the selected item using
// parent.getItemAtPosition(pos)
}
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
}
这时就可以通过pos 获得用户选择array中的哪一项
最后就要setOnItemSelectedListener 来告诉spinner这个实现这个接口的毁掉函数.
Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);