Android Spinner(下拉框)的使用

一、使用XML作为数据源

1.在布局文件当中声明:

1
2
3
4
5
<Spinner
android:id="@+id/spinnerId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

2.在string.xml当中声明一个数组:

1
2
3
4
5
6
7
8
9
10
    <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>

3.创建一个ArrayAdapter:

1
2
3
4
5
6
7
8
9
//通过createFromResource方法创建一个ArrayAdapter对象
        //第一个参数是指上下文对象
        //第二参数引用了在strings.xml文件当中定义的String数组
        //第三个参数是用来指定Spinner的样式,是一个布局文件ID,该布局文件由Android系统提供,也可替换为自己定义的布局文件
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.planets_array,
                android.R.layout.simple_spinner_item);
        //设置Spinner当中每个条目的样式,同样是引用一个Android系统提供的布局文件
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

4.得到Spinner对象,并设置数据:

1
2
3
spinner = (Spinner) findViewById(R.id.spinnerId);  
spinner.setAdapter(adapter);  
spinner.setPrompt("测试");

5.创建一个监听器,并设置监听:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//这个监听器主要用来监听用户选择列表的动作
    class SpinnerOnSelectedListener implements OnItemSelectedListener{
       
        //当用户选定了一个条目时,就会调用该方法
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position,
                long id) {
            String selected = adapterView.getItemAtPosition(position).toString();
            System.out.println(selected);
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
            // TODO Auto-generated method stub
            System.out.println("nothingSelected");
        }
       
    }

//为spinner对象绑定监听器
spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());

spinner.setVisibility(View.VISIBLE);

二、使用数组作为数据源

因为步骤和上面的差不多,我就直接上代码了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//通过ID,得到Spinner对象
        spinner = (Spinner) findViewById(R.id.spinnerId);
        List<String> list = new ArrayList<String>();
        list.add("test1");
        list.add("test2");
        //调用ArrayAdapter的构造函数来创建ArrayAdapter对象
        //第一个参数是指上下文对象
        //第二个参数指定了下拉菜单当中每一个条目的样式
        //第三个参数指定了TextView控件的ID
        //第四个参数为整个列表提供数据
        ArrayAdapter adapter = new ArrayAdapter(this,R.layout.item,R.id.textViewId,list);
                spinner.setAdapter(adapter);
        spinner.setPrompt("测试");
        //为spinner对象绑定监听器
        spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());

//这个监听器主要用来监听用户选择列表的动作
    class SpinnerOnSelectedListener implements OnItemSelectedListener{
       
        //当用户选定了一个条目时,就会调用该方法
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position,
                long id) {
            String selected = adapterView.getItemAtPosition(position).toString();
            System.out.println(selected);
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
            // TODO Auto-generated method stub
            System.out.println("nothingSelected");
        }
       
    }

除非注明,饮水思源博客文章均为原创,转载请以链接形式标明本文地址

本文地址:http://www.alonemonkey.com/android-spinner.html

本文链接:http://www.alonemonkey.com/android-spinner.html