Android给我们提供了一个spinner控件,这个控件主要就是一个列表,那么我们就来说说这个控件吧,这个控件在以前的也看见过,但今天还是从新介绍一遍吧。Spinner位于 android.widget包下,每次只显示用户选中的元素,当用户再次点击时,会弹出选择列表供用户选择,而选择列表中的元素同样来自适配器。Spinner是View类得一个子类。下面来具体看一下怎么回事:
1.效果图:
2.XML代码
1 27 8 14 15 1620 21 22
3.java代码
1 package com.example.spinner; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.view.View; 8 import android.widget.AdapterView; 9 import android.widget.ArrayAdapter;10 import android.widget.Spinner;11 import android.widget.TextView;12 13 public class MainActivity extends Activity {14 15 private Listlist = new ArrayList ();16 private TextView myTextView;17 private Spinner mySpinner;18 private ArrayAdapter adapter;19 20 @Override21 public void onCreate(Bundle savedInstanceState) {22 super.onCreate(savedInstanceState);23 setContentView(R.layout.activity_main);24 initSpinner();25 }26 27 private void initSpinner() {28 // 第一步:添加一个下拉列表项的list,这里添加的项就是下拉列表的菜单项29 list.add("北京");30 list.add("上海");31 list.add("深圳");32 list.add("南京");33 list.add("重庆");34 myTextView = (TextView) findViewById(R.id.TextView_Show);35 mySpinner = (Spinner) findViewById(R.id.spinner_City);36 // 第二步:为下拉列表定义一个适配器,这里就用到里前面定义的list。37 adapter = new ArrayAdapter (this,38 android.R.layout.simple_spinner_item, list);39 // 第三步:为适配器设置下拉列表下拉时的菜单样式。40 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);41 // 第四步:将适配器添加到下拉列表上42 mySpinner.setAdapter(adapter);43 // 第五步:为下拉列表设置各种事件的响应,这个事响应菜单被选中44 mySpinner45 .setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {46 public void onItemSelected(AdapterView arg0, View arg1,47 int arg2, long arg3) {48 // TODO Auto-generated method stub49 /* 将所选mySpinner 的值带入myTextView 中 */50 myTextView.setText("您选择的是:" + adapter.getItem(arg2));51 /* 将mySpinner 显示 */52 arg0.setVisibility(View.VISIBLE);53 }54 55 public void onNothingSelected(AdapterView arg0) {56 // TODO Auto-generated method stub57 // myTextView.setText("NONE");58 // arg0.setVisibility(View.VISIBLE);59 }60 });61 }62 }