当Spinner对话框关闭时展示该提醒ca88亚洲城网站,让用户能够从值集中火速选择3个值

4.

Spinner用来展示列表项,类似于一组单选框RadioButton.上边瞥一下它的遵守。

响应用户挑选

当用户从下拉菜单中选取四个项目时,Spinner 对象会收到一个on-item-selected 事件。
要为微调框定义采用事件处理程序,请完成AdapterView.OnItemSelectedListener 接口以及相应的 onItemSelected()
回调方法。例如,以下是 Activity 中的贰个接口完结:
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 }}

艾达pterView.OnItemSelectedListener 须求 onItemSelected() 和
onNothingSelected() 回调方法。
然后,您必要调用 setOnItemSelectedListener() 来内定接口实现:
Spinner spinner = (Spinner) findViewById(奇骏.id.spinner);
spinner.setOnItemSelectedListener(this); 要是您使用 Activity 或 Fragment
来贯彻 AdapterView.OnItemSelectedListener 接口(如上例),则能够传递
this 作为接口实例。
作者的微信二维码如下,欢迎沟通切磋

ca88亚洲城网站 1

此间写图片描述

迎接关切《IT面试题汇总》微信订阅号。每一日推送经典面试题和面试心得技巧
微信订阅号二维码如下:

ca88亚洲城网站 2

那里写图片描述

 

叁 、首要形式

微调框

微调框提供一种格局,让用户能够从值集中快速选取八个值。私下认可状态下,微调框展现其近期所选的值。
触摸微调框可兆示下拉菜单,在那之中列有全数别的可用值,用户可从中挑选多个新值。
你能够选拔 Spinner 对象向您的布局中添加八个微调框。经常应在 XML
布局中运用 成分来推行此操作。 例如:
<Spinner android:id=”@+id/planets_spinner”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” />

要动用采取列表填充微调框,还索要在 Activity 或 Fragment 源代码中钦定SpinnerAdapter。

2.在main.xml里面添加1个spinner,设置Android:promt属性,那是三个提醒属性,同时为私下认可的textview修改Android:text属性,它们将引用同三个string文本,如何知道吧,看了下边包车型的士图应该具有意会了。达成的功能是下图中红圈内的文字提醒:

    setPrompt(CharSequence
prompt):设置当Spinner对话框关闭时显得的唤醒

应用用户挑选填充微调框

您为微调框提供的选拔可来自其它来源,但必须透过 SpinnerAdapter
来提供,例如,如若选用可由此数组获取,则经过
ArrayAdapter)来提供,假使选择可经过数据库询问得到,则经过
CursorAdapter 来提供。
比如说,假使预先明确了微调框的可用选取,则可因而字符串能源文件中定义的字符串数组来提供这几个选拔。
<?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 或 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() 方法允许从字符串数组创设 ArrayAdapter。
此方法的第多个参数是布局财富,其定义所选选用怎么浮未来微调框控件中。
simple_spinner_item
布局由平台提供,是暗许布局,除非您想为微调框外观定义本身的布局,不然应接纳此布局。
接下来,应调用 setDropDownViewResource(int)
钦命适配器应用于展现微调框选用列表的布局(simple_spinner_dropdown_item
是平台定义的另一专业布局)。
调用 setAdapter() 以将适配器应用到 Spinner。

public static ArrayAdapter<CharSequence> createFromResource(Context context, int textArrayResId, int textViewResId)

 

返回值:ArrayAdapter<CharSequence>

组费用例, 锐界.array.planets_array
标识了大家要用到的字符串数组.大切诺基.layout.simple_spinner_item
标识了系统定义的三个正式的Spinner的布局外观。

而后者adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);定义的是spinner的每八个item的布局外观。

5.为了响应用户选拔下拉框中某一项的风云,还要加上二个OnItemSelectedListener监听,具体落到实处是,新建一个MyOnItemSelectedListener
类继承OnItemSelectedListener类,在中间重写八个方法onItemSelected(),onNothingSelected(),它们各自处理item被选春天没选的风浪:

public class MyOnItemSelectedListener implements OnItemSelectedListener 
    {

        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) 
        { 
            Toast.makeText(parent.getContext(), 
                    "The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG) 
                    .show(); 
        }

        public void onNothingSelected(AdapterView parent) 
        { 
            // Do nothing. 
        } 
    }

 

5.OK,运行。(源码下载

ca88亚洲城网站 3

 

④ 、完整代码

局部的main.xml如下:

    setOnItemClickListener(AdapterView.OnItemClickListener
l):当项被点击时调用

解释一下上边的两句ArrayAdapter.createFromResource(this,酷路泽.array.planets_array,
android.R.layout.simple_spinner_item);和adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);关于前者它的函数原型如下

 

参数:

context 应用的上下文

textArrayResId 数据源数组标识
textViewResId 用于体现的布局view

         Spinner s2 = (Spinner)
findViewById(R.id.spinnerplanet);
         adapter =
ArrayAdapter.createFromResource(this, R.array.planets,
                
android.R.layout.simple_spinner_item);
        
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         s2.setAdapter(adapter);
        
s2.setOnItemSelectedListener(
                 new
OnItemSelectedListener() {
                     public void
onItemSelected(
                            
AdapterView<?> parent, View view, int position, long id)
{
                        
showToast(“Spinner2: position=” + position+1 + ” id=” + id+1);
                     }

3.在onCreate()里面添加操作spinner的代码:

    onDetachedFromWindow():当Spinner脱离窗口时被调用。

ca88亚洲城网站 4ca88亚洲城网站 5

    android:prompt:当Spinner对话框关闭时显得该提示

<TextView 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:text="@string/planet_prompt" />


<Spinner 
android:id="@+id/spinner1" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:prompt="@string/planet_prompt"/>

一、概述

正文根据官方教程适当翻译而来。(源码下载

ca88亚洲城网站 6

1.新建筑工程程HelloSpinner

 ca88亚洲城网站 7

@Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main);

        Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
                R.array.planets_array, android.R.layout.simple_spinner_item); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        spinner.setAdapter(adapter); 
        spinner.setOnItemSelectedListener(new MyOnItemSelectedListener()); 
    }

         Spinner s1 = (Spinner)
findViewById(R.id.spinnercolor);
         ArrayAdapter<CharSequence>
adapter = ArrayAdapter.createFromResource(
                 this, R.array.colors,
android.R.layout.simple_spinner_item);
        
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         s1.setAdapter(adapter);
        
s1.setOnItemSelectedListener(
                 new
OnItemSelectedListener() {
                     public void
onItemSelected(
                            
AdapterView<?> parent, View view, int position, long id)
{
                        
showToast(“Spinner1: position=” + position + ” id=” + id);
                     }

 

    Spinner是1个老是只好选用具有项的3个项的控件。它的项来自于与之相关联的适配器中。

前言

源码下载

                     public void
onNothingSelected(AdapterView<?> parent) {
                        
showToast(“Spinner2: unselected”);
                     }
                 });
     }
  
 private void showToast(CharSequence msg)
{
         Toast.makeText(this, msg,
Toast.LENGTH_SHORT).show();
     }
}

    performClick():假若它被定义就调用此视图的OnClickListener

                     public void
onNothingSelected(AdapterView<?> parent) {
                        
showToast(“Spinner1: unselected”);
                     }
                 });

 

public class SpinnerDemo extends Activity
{
   @Override
     public void onCreate(Bundle
savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.spinnerpage);

 ca88亚洲城网站 8

二 、重要性质

 

相关文章