zoukankan      html  css  js  c++  java
  • 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

     

     

  • 相关阅读:
    网络编程-进程-1、什么叫进程?
    Python做性能测试-1、Locust基础篇
    网络编程-线程-6、互斥锁解决线程中数据安全问题
    网络编程-线程-5、多个线程共享全局变量造成资源争抢,数据混乱
    网络编程-线程-4、多个线程之间共享全局变量
    网络编程-线程-3、通过继承Thread类创建线程
    网络编程-线程-2、如何查看有多少个线程在运行
    网络编程-线程-1、一张图让你看懂多线程工作原理
    网络编程-多任务,并发,并行--从底层工作原理解释,让你不再傻傻分不清这些到底什么意思
    二、网络编程-socket之TCP协议开发客户端和服务端通信
  • 原文地址:https://www.cnblogs.com/caesura-k/p/11783191.html
Copyright © 2011-2022 走看看