您的位置:首页 > 移动开发 > Android开发

marsAndroid学习——spinner的基本使用

2012-11-16 00:03 309 查看

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;
    }
}


以上学习来自marsAndroid的视频与论坛:http://www.mars-droid.com/bbs/forum.php

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: