marsAndroid学习——spinner的基本使用
Spinner:
译为诱饵,我想可以理解下面还有大鱼,呵呵,在Android中主要是提供下拉菜单的功能,
这里简单介绍了snipper的两种创建方法:
静态方式:
在strings.xml文件中创建一个<string-array><item>name</item></string-array>,
通过createFromResource方法创建一个ArrayAdapter对象,这里布局文件可以使用自己的,也可以使用系统的
动态方式:
使用List集合在程序代码中创建,不过还要新建一个布局文件,来限制个条目的显示效果,,
调用ArrayAdapter的构造函数来创建ArrayAdapter对象
条目监听器的简单使用:
创建一个类,实现OnItemSelectedListener,并覆盖onItemSelected,onNothingSelected方法
效果图示:
使用系统的布局图案
使用自己定义的布局文件
代码体现:
在mainActivity.xml文件中定义一个Spinner
<Spinner android:id="@+id/planets_spinner" android:layout_height="wrap_content" android:layout_width="fill_parent" />
静态时在strings.xml文件中需要定义的布局
<string-array name="planets_array"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array>
动态创建ArrayAdapter时需要的item.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>
Activity.java 文件
package com.example.myspinner; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; public class SpinnerActivity extends Activity { private Spinner spinner = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_spinner); spinner = (Spinner) findViewById(R.id.planets_spinner); //通过createFromResource方法创建一个ArrayAdapter对象 //createFromResource(Context context, int textArrayResId, int textViewResId) //第一个参数是指上下文对象 //第二参数引用了在strings.xml文件当中定义的String数组 //第三个参数是用来指定Spinner的样式,是一个布局文件ID,该布局文件由Android系统提供,也可替换为自己定义的布局文件 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item); //设置Spinner当中每个条目的样式,同样是引用一个Android系统提供的布局文件 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //动态创建ArrayAdapter的方法 //调用ArrayAdapter的构造函数来创建ArrayAdapter对象 //第一个参数是指上下文对象 //第二个参数指定了下拉菜单当中每一个条目的样式 //第三个参数指定了TextView控件的ID //第四个参数为整个列表提供数据 List<String> list = new ArrayList<String>(); list.add("RowOne"); list.add("RowTow"); list.add("RowThree"); list.add("RowFour"); list.add("RowFive"); ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, R.layout.item,R.id.textViewId,list); spinner.setAdapter(adapter2); //设置标题 spinner.setPrompt("测试"); spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener()); } //设置一个监听器 private final class SpinnerOnSelectedListener implements OnItemSelectedListener{ //当用户选定了一个条目时,就会调用该方法 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String selectedItem = parent.getItemAtPosition(position).toString(); System.out.println(selectedItem); } public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub System.out.println("nothingSelected"); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_spinner, menu); return true; } }