[Android]实现Spinner控件

首先在布局文件中声明spinner控件

    <Spinner 
        android:id="@+id/spner"        
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />

如果是静态定义spinner中的元素的话,需要在资源文件string.xml中声明字符串数组

    
    <string-array name="str_ary">
        <item>Earth</item>
        <item>Mars</item>
        <item>Venus</item>
    </string-array>
    

在Activity中new一个Spinner变量,并且为其绑定适配器,并安装监听器,设置监听到动作时的操作。

注:注释中的内容是用xml文件中的静态的数组定义适配器

package com.example.spinnerantivity;

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;
import android.widget.TextView;

public class MainActivity extends Activity {
	TextView tv1=null;
	Spinner sp1=null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv1=(TextView)findViewById(R.id.num);
        sp1=(Spinner)findViewById(R.id.spner);
        tv1.setText("fuck");
        List<String> list=new ArrayList<String>();
        list.add("fuck");
        list.add("shit");
        list.add("bitch");
        ArrayAdapter  adapter=new ArrayAdapter (this,R.layout.spx,R.id.ttx,list);
//   参数1:当前上下文对象。
//   参数2:菜单中每个条目的布局文件,这里使用自定义的。
//   参数3:无论条目的样式如何,都需要有显示文字的textview控件,这个参数就是该控件Id。
//   参数4:list对象,就是自定义的动态列表数据。
        
        
/*        
        ArrayAdapter<CharSequence>  adapter=
        ArrayAdapter.createFromResource(this,R.array.str_ary,android.R.layout.simple_spinner_item);
//   参数1:当前上下文对象。
//    参数2:就是在第二步String.xml中定义的数组,也就是下拉菜单的内容。
//     参数3:下拉菜单的整体样式,这里定义的是Android自带的标准样式,当然也可以自定义。
       adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
 //      设置下拉菜单中每一个选项(item)的样式,这里定义的也是Android自带的标准样式,当然也可以自定义。       
       
       */
       sp1.setAdapter(adapter);
       sp1.setPrompt("MySpinner"); //作用是给下拉菜单添加标题
       sp1.setOnItemSelectedListener(new SpinnerListener());
    }
    
    class SpinnerListener implements OnItemSelectedListener{

		public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
				long arg3) {
			//这个函数当选择下拉菜单选项时调用,第一个参数是下拉菜单控件,第二个参数是当前被选中的Item,
			//第三个参数是选中的位置,第四个参数是当前选中的Id。
	    	String selected=arg0.getItemAtPosition(arg2).toString();
	    	tv1.setText(selected);
			// TODO Auto-generated method stub
		}

		//这个函数当下拉菜单什么也没选时调用。
		public void onNothingSelected(AdapterView<?> arg0) {
			// TODO Auto-generated method stub
			
		}

    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

 

猜你喜欢

转载自bbezxcy.iteye.com/blog/1733856
今日推荐