Spinner提供了从一个数据集合中快速选择一项值的办法。
有时有些数据是需要直接提供给用户,供用户选择,避免用户输入,从而提供一个下来列表。
默认情况下Spinner显示的是当前选择的值。
编码实现:
1.实例化Spinner组件
2.设置适配数组,供用户选择的数据
3.设置监听 setOnItemSelectedListener 实现 onItemSelected 方法获取用户选择项,setVisibility 方法设置当前显示项
public class MainActivity extends AppCompatActivity {
private Spinner m_Spinner;
private TextView m_TextView;
//数据源
private static String[] mStr = {"A型","B型","O型","AB型"};
//适配器
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
m_Spinner = (Spinner) findViewById(R.id.Spinner);
m_TextView = (TextView)findViewById(R.id.textView);
//初始化适配器
adapter = new ArrayAdapter<String> (MainActivity.this,android.R.layout.simple_list_item_1,mStr);
//设置下拉列表的风格
adapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
//设置适配器
m_Spinner.setAdapter (adapter);
//添加监听事件
m_Spinner.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener () {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
m_TextView.setText ("你的血型是:"+mStr[position]);
//设置显示当前选择的项
view.setVisibility (View.VISIBLE);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
布局文件:
注意:默认布局Spinner 弹窗会遮挡Spinner组件,需设置 android:overlapAnchor="false"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:orientation="vertical"
tools:context="textdome.android.okl.com.spinner.MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!"/>
<Spinner
android:id="@+id/Spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overlapAnchor="false"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>