android:Spinner组件代码

前言:实现的功能为界面显示两个spinner组件,点击下拉框内的选项之后,弹出toast提示选中了哪个选项。

1、先在xml文件中定义spinner组件。因为用到了两种实现方式,所以定义两个spinner。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:paddingTop="20dp">
        <TextView
            android:id="@+id/tView_1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="spinner1" />
        <Spinner
            android:id="@+id/spinner_1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:entries="@array/spinner1_array" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/linearLayout1"
        android:paddingTop="30dp">
        <TextView
            android:id="@+id/tView_2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="spinner2" />
        <Spinner
            android:id="@+id/spinner_2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:dropDownWidth="100dp"
            android:popupBackground="@drawable/background"
            android:dropDownSelector="@color/colorPrimary"
            />
    </LinearLayout>
</RelativeLayout>

 2、接着我们还得在string.xml中设置一下需要显示的数据,spinner1的数据直接显示,spinner2的数据通过Adapter传递显示。

  还可以通过代码赋值,然后用Adapter传递显示,但是我有点懒,就没有写这种。

<resources>
    <string name="app_name">Spinner_activity</string>

    <string-array name="spinner1_array">
        <item>Toast1</item>
        <item>Toast2</item>
        <item>Toast3</item>
        <item>Toast4</item>
        <item>Toast5</item>
        <item>Toast6</item>
    </string-array>

    <string-array name="spinner2_array">
        <item>Toast1</item>
        <item>Toast2</item>
        <item>Toast3</item>
        <item>Toast4</item>
        <item>Toast5</item>
        <item>Toast6</item>
    </string-array>
</resources>

  3、然后是在MainActivity中进行spinner的绑定、监听、点击事件的设置。

package com.example.yonghu.spinner_activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import static android.widget.Toast.*;

public class MainActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //method 1:
        //绑定组件,然后监听,以及new一个监听的响应事件
        Spinner spinner1 = (Spinner) findViewById(R.id.spinner_1);
        spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(MainActivity.this,
                        adapterView.getItemAtPosition(i).toString()+" select by spinner1", LENGTH_SHORT).show();
            }
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) { }
        });

        //method 2:
        //定义叫adapter的ArrayAdapter适配器(spinner视图与array-string的加工厂)
        // 给adapter传递数据,参数可以理解为(MainActivity.this , 数据原料来源, 数据加工方式:数组中的一个元素就是一个spinner选项)
        //将adapter的数据传递出去给spinner视图(加工完了,卖给spinner视图)

        //定义名字叫spinnner2的Spinner,顺便绑定到视图(spinner2找到了名字)
        //将adapter绑定到spinner2(spinner2找到了数据)
        //监听,以及new一个监听的响应事件
        ArrayAdapter<CharSequence> adapter;
        adapter=ArrayAdapter.createFromResource(this,  R.array.spinner2_array,  android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        Spinner spinner2 = (Spinner) findViewById(R.id.spinner_2);
        spinner2.setAdapter(adapter);
        spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int positon, long id) {
                Toast.makeText(MainActivity.this,
                        parent.getItemAtPosition(positon).toString()+"select by spinner2", LENGTH_SHORT).show();
            }
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) { }
        });
    }
} 

  最后本文的android studio版本为3.1.2、gradle运行版本为4.6、gradle插件版本为3.2.0。如果环境不匹配可能会有很多令人诧异的报错。

  下面附上github: https://github.com/caesura-k/spinner_activity.git

 

 

posted @ 2019-11-04 17:30  caesura_k  阅读(287)  评论(0编辑  收藏  举报