android:Spinner組件代碼

前言:實現的功能爲界面顯示兩個spinner組件,點擊下拉框內的選項以後,彈出toast提示選中了哪一個選項。界面以下:android

一、先在xml文件中定義spinner組件。由於用到了兩種實現方式,因此定義兩個spinner。git

<?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>

 二、接着咱們還得在string.xml中設置一下須要顯示的數據,spinner1的數據直接顯示,spinner2的數據經過Adapter傳遞顯示。github

  還能夠經過代碼賦值,而後用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>

  三、而後是在MainActivity中進行spinner的綁定、監聽、點擊事件的設置。app

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.二、gradle運行版本爲4.六、gradle插件版本爲3.2.0。若是環境不匹配可能會有不少使人詫異的報錯。ide

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

相關文章
相關標籤/搜索