安卓学习--------spinner控件

来源:互联网 发布:用友易代账软件 编辑:程序博客网 时间:2024/05/22 06:17

安卓提供了一种下拉菜单式的控件:spinner,实现这个控件主要就是配置ArrayAdapter这个适配器,下面就记录配置该适配器的两种方法。

一.通过createFromResource方法创建一个ArrayAdapter对象

1.首先在布局文件中定义一个spinner控件

<Spinnerandroid:id="@+id/spinnerId"android:spinnerMode="dialog"android:prompt="@string/prompt"android:layout_width="fill_parent"android:layout_height="wrap_content"/>
2.创建一个ArrayAdapter适配器

//第一个参数是指上下文对象//第二参数引用了在strings.xml文件当中定义的String数组//第三个参数是用来指定Spinner的样式,是一个布局文件ID,该布局文件由Android系统提供,也可替换为自己定义的布局文件ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item);

3.设置每个条目的的样式,并设置适配器

//设置Spinner当中每个条目的样式,同样是引用一个Android系统提供的布局文件adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);spinner.setAdapter(adapter);

关于spinner的prompt设置有2种方法:

1.在xml布局文件中使用android:prompt=""来进设置;

2.在程序使用spinner.setPromptId()或者spinner.setPrompt()进行设置。


二.使用ArrayAdapter的构造函数来创建ArrayAdapter对象

1.首先创建一个ArrayList

List<String> list = new ArrayList<String>();list.add("test1");list.add("test2");

2.为list创建xml布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><TextView  android:id="@+id/textViewId"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     /></LinearLayout>

3.调用ArrayAdapter的构造函数来创建ArrayAdapter对象

ArrayAdapter adapter = new ArrayAdapter(this,R.layout.item,R.id.textViewId,list);spinner.setAdapter(adapter);

以上就是设置ArrayAdapter的两种方法,同时我们可以对用户选择列表的动作进行监听。

1.首先为spinner绑定监听器

spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());

2.创建监听器处理类

class SpinnerOnSelectedListener implements OnItemSelectedListener{//当用户选定了一个条目时,就会调用该方法@Overridepublic void onItemSelected(AdapterView<?> adapterView, View view, int position,long id) {//获取选择的位置String selected = adapterView.getItemAtPosition(position).toString();System.out.println(selected);}@Overridepublic void onNothingSelected(AdapterView<?> adapterView) {// TODO Auto-generated method stubSystem.out.println("nothingSelected");}}


我们可以在这里添加在用户操作后所要执行的动作。


可参考文档:

http://blog.csdn.net/chenjinyu_tang/article/details/6587953

http://imshare.iteye.com/blog/770950



原创粉丝点击