Spinner控件是一种下拉列表,提供一些数据供用户选择,它的数据源是通过ArrayAdapter提供的,而ArrayAdater的数据源有两种方式提供,一种是在资源文件中,另一种则是在程序中构造数组。下面是例子:
package com.my.simple;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
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 SpinnerDemo extends Activity {
/** Called when the activity is first created. */
String[] bloodType = new String[]{"A","B","AB","O"};
private static final boolean DEBUG = true;
private static final String TAG = "SpinnerDemo";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner mSpinnerBloodType = (Spinner)findViewById(R.id.Bloodspinner);
Spinner mSpinnerColor = (Spinner)findViewById(R.id.Colorspinner);
//构建ArrayAdapter,数据源是数组
ArrayAdapter mbloodAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,bloodType);
//构建ArrayAdapter,数据源是资源文件
ArrayAdapter mColorAdapter = ArrayAdapter.createFromResource(this, R.array.colors, android.R.layout.simple_spinner_item);
//设置下拉列表样式
mbloodAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mColorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinnerBloodType.setAdapter(mbloodAdapter);
//添加监听器
mSpinnerBloodType.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
if(DEBUG){
Log.d(TAG, String.valueOf(arg0));
Log.d(TAG, String.valueOf(arg1));
Log.d(TAG, String.valueOf(arg2));
Log.d(TAG, String.valueOf(arg3));
}
Toast.makeText(SpinnerDemo.this,
SpinnerDemo.this.getResources().getString(R.string.selectedItem)+":"+bloodType[arg2], Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
mSpinnerColor.setAdapter(mColorAdapter);
}
}
下面是资源文件代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="colors">
<item>黑色 | Black</item>
<item>蓝色 | Blue</item>
<item>棕色 | Brown</item>
<item>绿色 | Green</item>
<item>灰色 | Grey</item>
<item>粉色 | Pink</item>
<item>紫色 | Purple</item>
<item>红色 | Red</item>
<item>白色 | White</item>
<item>黄色 | Yellow</item>
</string-array>
</resources>
这是我自己做的总结,仅供参考!