Android开发之Spinner(下拉选项)的基本使用

1、先上图

2、创建Spinner分为三步:
2.1、首先在Activity的XML中添加标签,设置基本属性;
2.2、给Spinner提供相对应的数据源,及样式;
2.3、创建Spinner相关的ArrayAdapter;
3、下面用两种方式来创建一个Spinner;
3.1、第一种方式使用ArrayAdapter的静态方法createFromResource();
3.1.1、该方法需要传入三个参数,第一个为Context对象,即当前Activity;
3.1.2、第二个参数为textArrayResId,在String.xml中创建一个提供数据源;
3.1.3、第三个参数为Item样式,可以使用系统自带样式R.layout.support_simple_spinner_dropdown_item;
3.2、第二种方式使用ArrayAdapter的构造方法动态构建;
3.2.1、该方法需要传入四个参数,第一个Context对象,即为当前Activity;
3.2.2、第二个参数为resource,即Item的样式;
3.2.3、第三个参数为resource当中TextView的id;
3.2.4、第四个参数为数据源,提供一个list,list中可以为任何对象,结果取对象的toString方法;
4、设置监听,setOnItemSelectedListener()方法;

string.xml

1
2
3
4
5
6
7
8
9
10
11
12
<resources>
    <string name="app_name">Spinner</string>
    <string-array name="spinner">
        <item>AAAA</item>
        <item>BBBB</item>
        <item>CCCC</item>
        <item>DDDD</item>
        <item>EEEE</item>
        <item>FFFF</item>
        <item>GGGG</item>
    </string-array>
</resources>

item.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="44dp"
        android:text="Content"
        android:gravity="center_vertical"
        android:padding="5dp" />
    <View
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:background="#ACACAC"
        />
</LinearLayout>

Activity

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.yusian.spinner;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
 
import java.util.ArrayList;
import java.util.List;
 
public class MainActivity extends AppCompatActivity {
    private Spinner spinner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = (Spinner) findViewById(R.id.spinner);
 
        // 方式一:使用ArrayAdapter的静态方法加载本地资源创建
        ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
                R.array.spinner,    // 数据
                R.layout.support_simple_spinner_dropdown_item   // 样式
        );
 
        // 方式二:使用ArrayAdapter的构造方法动态创建
//        List<String> list = new ArrayList<>();
//        list.add("11111");
//        list.add("22222");
//        list.add("33333");
//        adapter = new ArrayAdapter(this,
//                R.layout.item,      // 自定义样式
//                R.id.textview,      // 指定显示内容的TextView
//                list                // 数据源
//        );
 
        spinner.setAdapter(adapter);
        // 设置监听
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Log.d("SALog", "onItemSelected: " + position);
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                Log.d("SALog", "onNothingSelected: ");
            }
        });
    }
}

Leave a Reply