高级控件之列表选择框(Spinner)

一.列表选择框的基本知识

      Spinner是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源。

(一)XML配置:

 <Spinner android:id="@+id/ctype" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:entries="@array/ctype"/>//设置数组源 

(二)选中默认值:

spinner.setSelection(2,true);选中默认值

(三)监听事件:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view ,  int position, long id) { 
                    //当用户选择其中一项时 
    } 
     @Override 
     public void onNothingSelected(AdapterView<?> parent) {
     //当没有任何选择时
     } 
});

      它也可以设置适配器作为数据源,如果下拉列表中并不止一个TextView显示文本,那么就需要设置适配器,但是一般下拉列表都只需要一个文本。

(四)适配器

      spinner.setAdapter(adapter); 如果需要多个组件值都需要改变,那么一般使用SimpleAdapter类。

(五)自动完成文本框(AutoCompleteTextView)和列表选择框(Spinner)的区别

      都是有点类似下拉效果而已,但是实际用途是非常不一样的;
      1.自动完成文本框继承于EditText,是输入内容时的提示作用。
      2.列表选择框一般用于点击一个文本框,然后显示可以选择的列表内容,点击列表某个内容后把数据显示在文本框内。

二.使用资源文件的数据来加载显示Spinner

(一)创建资源文件arrays.xml(在values文件夹中)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="myarray">
        <item>李嘉诚</item>
        <item>李文志</item>
        <item>李世民</item>
        <item>李鸿章</item>
        <item>李丹丹</item>
        <item>李泉</item>
    </string-array>
</resources>

(二)设计布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/myarray" />

</RelativeLayout>

(三)java代码设计

public class MainActivity extends Activity {

    // Spinner对象
    Spinner spinner;
    // 数据源
    String arr[];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 实例化对象
        spinner = (Spinner) findViewById(R.id.spinner);

        //获取资源文件里面的数组数据
         arr=getResources().getStringArray(R.array.myarray);
        // 添加选中条目的点击事件
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            // 选中任意的条目后会触发
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {

                Toast.makeText(MainActivity.this, "你选中了" + arr[position], 0)
                        .show();

            }

            // 这个方法基本没有用
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });

    }

}

程序运行后显示的界面:
z1
默认选中的是第一个资源数据;

点击下拉框后显示的界面:
z2

点击下拉显示的某一个数据后显示的界面:
z3

三.使用数组或集合的数据来加载显示Spinner

(一)布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
          />

</RelativeLayout>

(二)java代码文件

package com.example.lesson7_spinner;

import android.R.integer;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.Toast;

public class MainActivity extends Activity {

    // Spinner对象
    Spinner spinner;

    // 数据源

    String[] array = { "张三", "张4", "张5", "张6", "张7", "张8", "张9", "张10", "张11" };

    String arr[];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 实例化对象
        spinner = (Spinner) findViewById(R.id.spinner);     

        // 添加选中条目的点击事件
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            // 选中任意的条目后会触发
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {

                Toast.makeText(MainActivity.this, "你选中了" + arr[position], 0)
                        .show();

            }

            // 这个方法基本没有用
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
//创建适配器对象
        SpinnerAdapter adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, array);
//给Spinner设置适配器 
spinner.setAdapter(adapter);

    }

}

程序运行后点击下拉后显示的界面:

z4

在一般的程序中第二种方法的使用是常见的,因为页面数据的传递一般都是集合或数组。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峥嵘life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值