首页 > 代码库 > Android Spinner控件详解
Android Spinner控件详解
Spinner 类图
android.widget 类 Spinnerjava.lang.Object android.view.View android.view.ViewGroup android.widget.AdapterView<SpinnerAdapter> android.widget.AbsSpinner android.widget.Spinner
Spinner 意指下拉列表组件。
以下为android官网文档内容。
布局文件中加入Spinner元素标签
<Spinner android:id="@+id/planets_spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" />
To populate the spinner with a list of choices, you then need to specify a SpinnerAdapter
in your Activity
orFragment
source code.
为了给spinner增加选择项,你需要在你的Activity或者Fragment中使用一个特定的SpinnerAdapter对象作为数据源绑定到Spinner对象上。
The choices you provide for the spinner can come from any source, but must be provided through anSpinnerAdapter
, such as an ArrayAdapter
if the choices are available in an array or a CursorAdapter
if the choices are available from a database query.
虽然你可以给spinner提供任一数据源,但是这种数据源必须是实现SpinnerAdapter接口的。例如ArrayAdapter。如果选择从数据库中查询得到数据,那么你可以使用CursorAdapter这种Adapter作为数据源。
可以使用string数组。
<?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>
With an array such as this one, you can use the following code in your Activity
or Fragment
to supply the spinner with the array using an instance of ArrayAdapter
:
如果使用string数组,你需要在你的Activity或者Fragment中使用ArrayAdapter。
Spinner spinner = (Spinner) findViewById(R.id.spinner);// Create an ArrayAdapter using the string array and a default spinner layoutArrayAdapter<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 appearsadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// Apply the adapter to the spinnerspinner.setAdapter(adapter);
静态方法 createFromResource(Context context, int textArrayResId, int textViewResId
)
参数context 这里使用this 意指Activity
参数textArrayResId 这里使用R.array.plants_array 数据来源
参数textViewResId
这里使用android.R.layout.simple_spinner_item(android提供 也可以自己定制) Spinner的布局样式
You should then call setDropDownViewResource(int)
to specify the layout the adapter should use to display the list of spinner choices (simple_spinner_dropdown_item
is another standard layout defined by the platform).
可以调用 setDropDownViewResource(int) 去指定spinner列表中选项的布局和样式。
如何响应用户的选择,实现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 }}
The AdapterView.OnItemSelectedListener
requires the onItemSelected()
and onNothingSelected()
callback methods.
其中此接口需要实现其中的两个方法
Then you need to specify the interface implementation by calling setOnItemSelectedListener()
:(指定spinner对象实现OnItemSelectedListener接口)
Spinner spinner = (Spinner) findViewById(R.id.spinner);spinner.setOnItemSelectedListener(this);
Android Spinner控件详解