Spinner的简单使用

Spinner是一种类似于下拉式菜单widget,比较常使用.

根据开发文档Spinner使用指南,对Spinner的使用主要分以下几个步骤:

1、在布局文件中配置Spinner

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:padding="10dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:text="@string/planet_prompt"
    />
    <Spinner 
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/planet_prompt"
    />
</LinearLayout>


prompt为Spinner选择对话框的title,当然也可以在代码中设置,Spinner提供了相应的方法setPrompt(CharSequence prompt)和setPrompt(CharSequence prompt)

 

2、为Spinner提供待显示的数据列表,我们可以在string.xml中进行配置

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="planet_prompt">Choose a planet</string>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
</resources>


3、在代码中使用Spinner

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Spinner spinner = (Spinner) findViewById(R.id.spinner); // 获取Spinner引用

		//第一个参数为Context对象
		//第二个参数为要显示的数据源,也就是在string.xml配置的数组列表
		//第三个参数为设置Spinner的样式
		ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
				this, R.array.planets_array,
				android.R.layout.simple_spinner_item);
		//设置Spinner中每一项的样式
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		//设置Spinner数据来源适配器
		spinner.setAdapter(adapter) ;
	}


4、对用户选择进行监听

创建监听器

public class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
      Toast.makeText(parent.getContext()), "The planet is " +
          parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
    }

    public void onNothingSelected(AdapterView parent) {
      // Do nothing.
    }
}


注册监听器

spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());


这样就完成了对Spinner控件的简单使用,另外我们还可以动态的生成Spinner要显示的数据,自定义Adapter

1、定义Adapter的布局文件spinneradapter.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="data"
    />
    
<TextView  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/spinneritem"
    android:layout_marginLeft="20dip"
    />
    
</LinearLayout>


2、创建Adapter对象

String[] datalist = new String[] { "one", "two", "three" };
		//第二个参数为Spinner每一项的样式
		//第三个参数为数据源,接收String[]
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(
				this.getApplicationContext(), R.layout.spinneradapter,
				R.id.spinneritem, datalist);


最终代码为

package bing.simplespinner;

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.Toast;

public class SimpleSpinner extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Spinner spinner = (Spinner) findViewById(R.id.spinner); // 获取Spinner引用
		String[] datalist = new String[] { "one", "two", "three" };
		//第二个参数为Spinner每一项的样式
		//第三个参数为数据源,接收String[]
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(
				this.getApplicationContext(), R.layout.spinneradapter,
				R.id.spinneritem, datalist);
		//第一个参数为Context对象
		//第二个参数为要显示的数据源,也就是在string.xml配置的数组列表
		//第三个参数为设置Spinner的样式
		/*ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
				this, R.array.planets_array,
				android.R.layout.simple_spinner_item);*/
		//设置Spinner中每一项的样式
		//adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		//设置Spinner数据来源适配器
		spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
		spinner.setAdapter(adapter) ;
	}
}

class MyOnItemSelectedListener implements OnItemSelectedListener {

	public void onItemSelected(AdapterView<?> parent, View view, int pos,
			long id) {
		Toast.makeText(parent.getContext(),
				"The planet is " + parent.getItemAtPosition(pos).toString(),//根据选中的位置可以获取该选项的数据
				Toast.LENGTH_LONG).show();
	}

	public void onNothingSelected(AdapterView<?> parent) {
		Toast.makeText(parent.getContext(), "please select one item",
				Toast.LENGTH_LONG).show();
	}
}


运行结果


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值