Spinner 使用简单使用

Spinner下拉选择框学习记录,,,代码如下,注释非常详细了

SpinnerActivity

package com.btzh.mynotification;

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.SimpleAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class SpinnerActivity extends AppCompatActivity {

    Spinner commonSp;
    Spinner customSp;
    Spinner arraySp;

    private List<HashMap<String,String>>dataLists = new ArrayList<>();
    String[]names ={"张三","李四","王二","赵五","孙六"};
    String[]cities ={"北京","武汉","合肥","上海","台北"};
    SimpleAdapter simpleAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner);

        initViews();

        //填充adapter数据时,一定要对adapter进行刷新操作
        initSpinnerDatas();

    }


    //初始化
    void initViews(){
        /***## 1.  spinner by arraies*******/
        commonSp = findViewById(R.id.common);
        //设置选中监听
        commonSp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//                Toast.makeText(SpinnerActivity.this,"选中的position:"+position+"\n"
//                        +"选中内容"+commonSp.getSelectedItem().toString(),Toast.LENGTH_LONG).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        commonSp.setEnabled(true); //设置是否能够点击
        //commonSp.setSelection(1); //默认选中第几个选项(注意不要超过数据源的长度)
        commonSp.setTag("commonSp"); //设置标签别名,在多个spinner的选中监听事件中会很方便使用
        //设置选中默认,并有动画显示(没看出来啊,提示只有当被请求的位置已经在屏幕上时才有动画,我怎么知道啥意思,我也很绝望啊)
        commonSp.setSelection(2,true);
        //commonSp.setAdapter(yourAdapter); //设置adapter


        /***## 2.  spinner by ArrayAdapter*******/
        arraySp = findViewById(R.id.arraySp);
        ArrayAdapter<String> commonAdapter =
                new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1,new String[]{"北极光","南极企鹅","冬季"});
        //commonAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//设置下拉视图
        arraySp.setAdapter(commonAdapter);


        /*****## 3.  spinner by simpleAdapter*******/
        customSp = findViewById(R.id.customSp);
        simpleAdapter = new SimpleAdapter(this,dataLists,
                R.layout.spinner_layout,new String[]{"name","city"},new int[]{R.id.spinner_name,R.id.spinner_city});
        customSp.setAdapter(simpleAdapter);
        customSp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                //获取选中的数据 --方法1
                HashMap<String,String> selectMap2 = (HashMap<String,String>) parent.getSelectedItem();

                if (!selectMap2.isEmpty()){
                    System.out.println("-------name2----:"+selectMap2.get("name")+
                            "------city2----:"+selectMap2.get("city")+"---position2---"+position);
                }

                //获取选中的数据--方法3
                String name = dataLists.get(position).get("name");
                String city = dataLists.get(position).get("city");
                Toast.makeText(SpinnerActivity.this,"name--"+name+"---city---"+city+"---position---"+position,Toast.LENGTH_LONG).show();

                获取选中的数据--方法3
                //其中根据源码可得 customSp.getSelectedItem() 等价于 parent.getSelectedItem()
                HashMap<String,String> selectMap1 = (HashMap<String,String>) customSp.getSelectedItem();
                String name1 = selectMap1.get("name");
                String city1 = selectMap1.get("city");

                System.out.println("-------name1----:"+name1+
                        "------city1----:"+city1+"---position1---"+position);

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

                HashMap<String,String> selectMap = (HashMap<String,String>) parent.getSelectedItem();
                if (!selectMap.isEmpty()){
                    System.out.println("-------name:"+selectMap.get("name")+"\n"+
                    "------city:"+selectMap.get("city"));
                }

            }
        });

    }


    void initSpinnerDatas(){
        for (int i=0; i<20;i++){
            HashMap<String,String>map = new HashMap<>();
            map.put("name",names[i%5]);
            map.put("city",cities[i%5]);
            dataLists.add(map);
        }

        simpleAdapter.notifyDataSetChanged();
    }
}

SpinnerActivity 的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.btzh.mynotification.SpinnerActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:orientation="horizontal"
        android:padding="8dp">

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="8dp"
            android:text="Common" />

        <Spinner
            android:id="@+id/common"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:entries="@array/languages"
            android:gravity="center"
            android:padding="8dp">
        </Spinner>


    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:orientation="horizontal"
        android:padding="8dp">

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="8dp"
            android:text="ArraySpinner" />

        <Spinner
            android:id="@+id/arraySp"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="8dp">
        </Spinner>


    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:orientation="horizontal"
        android:padding="8dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:gravity="center"
            android:padding="8dp"
            android:text="My Custom" />

        <Spinner
            android:id="@+id/customSp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:gravity="center"
            android:padding="8dp">
        </Spinner>

    </LinearLayout>

</LinearLayout>

simpleAdapter 的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:layout_margin="8dp"
        android:src="@mipmap/ic_launcher_round"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:layout_margin="8dp"
        android:textSize="14sp"
        android:text="mike"
        android:layout_gravity="center_vertical"
        android:id="@+id/spinner_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:layout_margin="8dp"
        android:textSize="14sp"
        android:text="beijing"
        android:layout_gravity="center_vertical"
        android:id="@+id/spinner_city"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

res->Values->strings目录下

<string-array name="languages">
        <item>c语言</item>
        <item>java </item>
        <item>php</item>
        <item>xml</item>
        <item>html</item>
    </string-array>

赋值代码到对应目录下,注册下activity就能正常运行了,

效果图如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值