天天看点

spinner----Mars第2季第1集

spinner使用的5个步骤

1、在布局文件中声明Spinner控件

2、创建ArrayAdapter,

      (1)在res/values/String.xml中声明下拉菜单的数组,然后通过CreateFromResource()方法创建

      (2)动态的在java代码里创建,调动ArrayAdapter的构造函数

3、在spinner上绑定adapter

4、写个监听器的类--实现OnItemSelectedListener接口

5、在spinner上绑定这个监听器

具体代码如下:

MainActivity.java

package com.example.s02_e01_spinner;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.ArrayAdapter;

import android.widget.Spinner;

public class MainActivity extends Activity {

private Spinner spinner;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

spinner=(Spinner)findViewById(R.id.spinnerId);

//新建适配器有两种方法:1是通过createFromResource方法创建ArrayAdapter对象,先 在res/values下的String.xml中声明,这里引用该资源;

//android.R.layout.simple_spinner_item  android.R.layout.simple_dropdown_item_1line都是系统里的样式,也可以自定义

ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this, R.array.my_family,

android.R.layout.simple_spinner_item);//括号里的参数详见帮助文档

//设置适配器的下拉样式

adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);

//2调用ArrayAdapter的构造函数动态的创建Arraydapter对象

//上面第一个参数:this,上下文对象;

//第2个参数:指定了下拉菜单中每一个条目的样式(样式风格写在Relativelayout的属性里)

//第3个参数:指定了这个list是显示在所在布局文件中的某控件的Id。item.xml的布局文件可有多个控件

//第4个参数:为整个列表提供的数据

//在spinner上添加上面剑豪的适配器

spinner.setAdapter(adapter);

//下面这条可有有个前提:activity_main.xml文件中设置android:spinnerMode="dialog",这个属性有两个可选(dialog和dropdown)

spinner.setPrompt("成员");

//在spinner上绑定监听器

spinner.setOnItemSelectedListener(new SpinnerOnItemSelectedListener());

}

class SpinnerOnItemSelectedListener implements OnItemSelectedListener{

@Override

public void onItemSelected(AdapterView<?> adapterview, View view, int postion,

long id) {

String selected=adapterview.getItemAtPosition(postion).toString();

System.out.println(selected);

}

@Override

public void onNothingSelected(AdapterView<?> arg0) {

System.out.println("you have chosed nothing");

//这里没有看到效果???

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

activity_main.xml

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

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

    <Spinner 

        android:id="@+id/spinnerId"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:spinnerMode="dialog"

        />

</RelativeLayout>

string.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="app_name">S02_E01_Spinner</string>

    <string name="action_settings">Settings</string>

    <string-array name="my_family">

        <item >葫芦娃</item>

        <item >玉华</item>

        <item >吉轩</item>

    </string-array>

</resources>

item.xml

<?xml version="1.0" encoding="UTF-8"?><LinearLayout

     xmlns:android="http://schemas.android.com/apk/res/android"

     android:orientation="vertical"

     android:layout_width="fill_parent"

     android:layout_height="fill_parent"

     android:background="#ff0000"

      >

    <TextView

        android:id="@+id/textViewId"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:background="#00ff00"

        />

  </LinearLayout>