Android-Spinner的Listenner事件及菜单级联

前几天刚刚分享了Spinner的使用方法,但并没有实现Spinner的选择事件,即没有为Spinner设置监听器。正好现在做点小东西需要用到Spinner,就认真的把Spinner好好学了一下,学会了对Spinner的监听事件出来,在此记录下来,与大家分享。

因为Android的控件使用的效果对每个人的需求来说都不一样,在此只是简单的实现最基本的事件处理,只为了今后需要的时候能回过头来重新学习而已。

首先现在布局文件里面添加一个TextView(显示提示信息)和一个Spinner。



    
    
    
在java文件中取得组件,定义与写事件监听器并绑定,需要实现一个接口:OnItemSelectedListener()。

public class MainActivity extends Activity {
	private TextView showinfo = null;
	private Spinner spinner = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		showinfo = (TextView) findViewById(R.id.showinfo);
		spinner = (Spinner) findViewById(R.id.spinner);
		spinner.setOnItemSelectedListener(new spinnerSelectedListenner());//绑定事件监听
	}
	private class spinnerSelectedListenner implements OnItemSelectedListener{

		@Override
		public void onItemSelected(AdapterView parent, View view,
				int position, long id) {         //望文生义,当列表项被选择时
			// TODO Auto-generated method stub
			String select = parent.getItemAtPosition(position).toString();//取得被选中的列表项的文字
			showinfo.setText("你喜欢的水果:"+select);
		}

		@Override
		public void onNothingSelected(AdapterView parent) {
			// TODO Auto-generated method stub
			
		}
		
	}
}
Android-Spinner的Listenner事件及菜单级联_第1张图片 Android-Spinner的Listenner事件及菜单级联_第2张图片

第二部分是实现Spinner列表的级联,即Spinner之下再嵌套一个Spinner。

 
    
因为第二级spinner对应一级spinner都含有不同的内容,所以不好在xml布局文件盒资源文件中定义添加。所以需要在java文件进行添加

public class MainActivity extends Activity {
	private TextView showinfo = null;
	private Spinner spinner = null;
	private Spinner spinner2 = null;
	private ArrayAdapter dataAdapter = null;
	// 定义二级spinner内容
	private String[][] juiceData = new String[][] { { "苹果汁1", "苹果汁2", "苹果汁3" },
			{ "荔枝1", "荔枝2", "荔枝3", }, { "葡萄1", "葡萄2" }, { "西瓜汁" } };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		showinfo = (TextView) findViewById(R.id.showinfo);
		spinner = (Spinner) findViewById(R.id.spinner);
		spinner2 = (Spinner) findViewById(R.id.spinner2);
		spinner.setOnItemSelectedListener(new spinnerSelectedListenner());// 绑定事件监听
	}

	private class spinnerSelectedListenner implements OnItemSelectedListener {

		@Override
		public void onItemSelected(AdapterView parent, View view,
				int position, long id) { // 望文生义,当列表项被选择时
			// TODO Auto-generated method stub
			dataAdapter = new ArrayAdapter(MainActivity.this,
					android.R.layout.simple_spinner_item, juiceData[position]);// 所有列表项
			dataAdapter
					.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// 设置显示风格
			spinner2.setAdapter(dataAdapter);// 添加二级菜单

		}

		@Override
		public void onNothingSelected(AdapterView parent) {
			// TODO Auto-generated method stub

		}

	}
}
实现的结果就是当第一级spinner选择“荔枝”时,二级spinner会默认选择“荔枝”项里的第一项,即荔枝1。其他同理。在二级菜单中选择时,第一级的选择不会改变。就这样,简单的实现了Spinner的级联。虽然效果很简单,但是复杂的东西都是从简单的东西开始的,只要理解了,复杂的东西也就能做出来了。

Android-Spinner的Listenner事件及菜单级联_第3张图片Android-Spinner的Listenner事件及菜单级联_第4张图片Android-Spinner的Listenner事件及菜单级联_第5张图片

关于Spinner的显示方法也在前面的前面文章详细说明了,关于如何在资源文件中配置Spinner的内容就不赘述了。

好了,去看《爸爸去哪儿》啦。

你可能感兴趣的:(android)