Android 系列 6.14通过旋转器类提供下拉选择器

117 篇文章 4 订阅
6.14通过旋转器类提供下拉选择器
问题
您想要提供一个下拉选项。

使用Spinner对象;您可以将选择列表作为适配器传递。
讨论
通常称为组合框,微调框是HTML选择或Swing JComboBox的模拟。它提供了一个下拉选择器,当单击旋转器时,其值显示为浮动在屏幕上。可以选择一个项目,浮动版本将弹出,在微调框中显示选择(见图6-11)。
像所有标准组件一样,微调器可以在XML或代码中创建和定制。在该示例中,术语“上下文”或“阅读上下文”用于指示何时采取患者的血压读数(早餐后,午餐后等),使得健康护理从业者可以理解在上下文中的值病人的一天。这里是res / layout / main.xml的摘录:
<Spinner android:id="@+id/contextChooser"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:prompt="@string/context_choice"/>

理想情况下,值列表将来自资源文件,以便可以国际化。这里是res / values / contexts.xml文件,包含要选择的时间列表的XML值:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="context_choice">When Reading Taken</string>
<string-array name="context_names">
<item>Breakfast</item>
<item>Lunch</item>
<item>Dinner</item>
<item>Snack</item>
</string-array>
</resources>




要在编译时将字符串列表绑定到Spinner,只需在布局文件中使用<Spinner android:entries =“@ array / context_names”...。这是将列表挂接到微调框中的最简单的方法,并且在示例代码中用于“Chooser1”。要在运行时将字符串列表绑定到Spinner,只需查找Spinner对象并设置值,如示例6-22所示。如果需要在运行时修改任何列表条目,或者列表来自Java语言枚举,则可能需要这样做。例6-22中的“Chooser2”从XML中获取列表,“Chooser3”从Java枚举中获取。
实例6-22。微调框代码
// Spinner 1 gets its labels automatically from an XML array
Spinner contextChooser1 = (Spinner) findViewById(R.id.contextChooser1);
contextChooser1.setOnItemSelectedListener(listener);
// Spinner 2 gets its labels programmatically from the XML array
Spinner contextChooser2 = (Spinner) findViewById(R.id.contextChooser2);
ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
this, R.array.reading_context_names, android.R.layout.simple_spinner_item);
contextChooser2.setAdapter(adapter2);
contextChooser2.setOnItemSelectedListener(listener);
// Spinner 3 gets its labels programmatically from a Java language enum
Spinner contextChooser3 = (Spinner) findViewById(R.id.contextChooser3);
ArrayAdapter<ReadingContext> adapter3 = new ArrayAdapter<ReadingContext>(
this, android.R.layout.simple_spinner_item, ReadingContext.values());
contextChooser3.setAdapter(adapter3);
contextChooser3.setOnItemSelectedListener(listener);

这是为了使微调器出现,并允许用户选择项目所需要的(见图6-11)。如果想要在用户选择它后立即知道所选的值,可以向Spinner的setOnItemSelectedListener发送一个OnItemSelectedListener实例。此接口有两个回调方法:setItemSelected和setNothingSelected。两者都用Spinner调用(但是参数声明为ViewAdapter);前一个方法使用两个整数参数调用,即列表位置和所选项目的标识,如下所示:
OnItemSelectedListener listener = new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> spinner, View arg1,
int pos, long id) {
Toast.makeText(SpinnerDemoActivity.this,
"You selected " + spinner.getSelectedItem(),
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> spinner) {
Toast.makeText(SpinnerDemoActivity.this,
"Nothing selected.", Toast.LENGTH_SHORT).show();
}
};

另一方面,在用户填写多个项目并单击按钮之前,您可能不需要Spinner的值。在这种情况下,您可以简单地调用Spinner的getSelectedItem()方法,该方法返回适配器放置在该位置的项目。假设你在列表中放置字符串,你可以调用toString()来获取给定的String值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值