`
imshare
  • 浏览: 321567 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

Android 之 下拉框(Spinner)的使用

阅读更多
下拉列表 Spinner。

Spinner的使用,可以极大提高用户的体验性。当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来。供用户选择。

Demo如下,可以留作参考

一、使用数组作为数据源


1.新建一个android的工程
2.工程的layout.xml文件如下:声明一个TextView控件和一个Spinner控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  >
  <TextView android:id="@+id/spinnerText"
  			android:layout_width="fill_parent" 
  			android:layout_height="wrap_content"></TextView>
  <Spinner android:id="@+id/Spinner01" 
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"></Spinner>
</LinearLayout>


3.java代码
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.TextView;

public class SpinnerActivity extends Activity {
	
	private static final String[] m={"A型","B型","O型","AB型","其他"};
	private TextView view ;
	private Spinner spinner;
	private ArrayAdapter<String> adapter;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.spinner);
		
		view = (TextView) findViewById(R.id.spinnerText);
		spinner = (Spinner) findViewById(R.id.Spinner01);
		//将可选内容与ArrayAdapter连接起来
		adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m);
		
		//设置下拉列表的风格
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		
		//将adapter 添加到spinner中
		spinner.setAdapter(adapter);
		
		//添加事件Spinner事件监听  
		spinner.setOnItemSelectedListener(new SpinnerSelectedListener());
		
		//设置默认值
		spinner.setVisibility(View.VISIBLE);
		
	}
	
	//使用数组形式操作
	class SpinnerSelectedListener implements OnItemSelectedListener{

		public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
				long arg3) {
			view.setText("你的血型是:"+m[arg2]);
		}

		public void onNothingSelected(AdapterView<?> arg0) {
		}
	}
}


4、运行效果如下:






二、使用XML作为数据源
1.新建一个android的工程
2.在values文件夹下新建一个arryas.xml文件:声明一个TextView控件和一个Spinner控件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
	<string-array name="plantes">
		<item>NOKIA</item>
		<item>MOTO</item>
		<item>HTC</item>
		<item>LG</item>
		<item>其他</item>
	</string-array>
</resources>

3.java代码
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.TextView;

public class SpinnerActivity extends Activity {
	
	private TextView view2;
	private Spinner spinner2;
	private ArrayAdapter adapter2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.spinner);

		spinner2 = (Spinner) findViewById(R.id.spinner02);
		view2 = (TextView) findViewById(R.id.spinnerText02);

		//将可选内容与ArrayAdapter连接起来
		adapter2 = ArrayAdapter.createFromResource(this, R.array.plantes, android.R.layout.simple_spinner_item);

		//设置下拉列表的风格	
 adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		//将adapter2 添加到spinner中
		spinner2.setAdapter(adapter2);

		//添加事件Spinner事件监听  
		spinner2.setOnItemSelectedListener(new SpinnerXMLSelectedListener());

		//设置默认值
		spinner2.setVisibility(View.VISIBLE);
		
	}
	
	//使用XML形式操作
	class SpinnerXMLSelectedListener implements OnItemSelectedListener{
		public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
				long arg3) {
			view2.setText("你使用什么样的手机:"+adapter2.getItem(arg2));
		}

		public void onNothingSelected(AdapterView<?> arg0) {
			
		}
		
	}
}


4、运行效果如下:





  • 大小: 10.1 KB
  • 大小: 11.3 KB
  • 大小: 11.7 KB
分享到:
评论
14 楼 asdf_2012 2015-01-12  
给个代码可以吗?
13 楼 lhlvictory 2014-11-25  
多谢分享,学习了!
12 楼 chen314960107 2014-04-08  
spinner.setSelection(number, true);
number为你数组中要显示第几个
11 楼 zhanglfat 2014-02-10  
endual 写道
hi,
spinner初始赋值您知道么,我找了网上的资料貌似都没有提到。
你看,是这样的,
private static final String[] m={"A型","B型","O型","AB型","其他"}; 
我初次赋值要是B型,而不是A型

setSelection(countryIndex);
10 楼 liyong704 2013-10-09  
endual 写道
hi,
spinner初始赋值您知道么,我找了网上的资料貌似都没有提到。
你看,是这样的,
private static final String[] m={"A型","B型","O型","AB型","其他"}; 
我初次赋值要是B型,而不是A型

setOnItemClickListener和setOnClickListener都不能用来监听Spinner,否则会出错。 setOnLongClickListener能用来监听Spinner的长按事件,只能监听Spinner被长按住,好像基本用不上。 
setOnTouchListener能用来监听Spinner控件的触摸事件,注意一次快速的触摸都能触发这事件好几次。   
只能尝试setOnHierarchyChangeListener用来监听显示在Spinner上面的view的变化的,需要重写两个方法
9 楼 a13429921973 2013-09-27  
顶!很细致!
8 楼 TheMatrix 2013-08-17  
真不错,写的很清晰!~
7 楼 luzle 2013-05-07  
多谢楼主分享
6 楼 shangs2010 2013-01-29  
不错,多谢~!
5 楼 endual 2012-07-05  
hi,
spinner初始赋值您知道么,我找了网上的资料貌似都没有提到。
你看,是这样的,
private static final String[] m={"A型","B型","O型","AB型","其他"}; 
我初次赋值要是B型,而不是A型
4 楼 smilecatflowers 2011-09-30  
不错,学习了。。。
3 楼 俺的名字叫荆华 2011-09-07  
多谢分享!
2 楼 imshare 2011-08-09  
dongyongyang 写道
多谢分享!

1 楼 dongyongyang 2011-08-09  
多谢分享!

相关推荐

Global site tag (gtag.js) - Google Analytics