我暂且把Spinner称作下拉选择框吧,先来看一下它的效果:
在layout文件中添加Spinner的代码如下:
<Spinner android:id="@+id/planets_spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" />
要在选择列表中填充选项,必须指定一个SpinnerAdapter。
在Spinner中填充用户选项
在字符串资源文件中定义选项:
<?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>
有了上面的字符串数组,下面代码通过ArrayAdapter将选项传递给Spinner:
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()方法可以根据字符串资源构造一个ArrayAdapter。
setDropDownViewResource()指定下拉列表的显示方式。
setAdapter()将adapter应用于Spinner。
响应用户的选择
当用户在下拉框中选择一个选项时,Spinner对象接收到一个on-item-selected事件。
为Spinner添加事件处理,实现 AdapterView.OnItemSelectedListener接口和相应的onItemSelected()方法。
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 } }
然后,调用 setOnItemSelectedListener()指定实现的接口
Spinner spinner = (Spinner) findViewById(R.id.spinner); spinner.setOnItemSelectedListener(this);
***
时间: 2024-10-29 00:30:25