spinner的简单使用

在xml文件中添加上列表中的数组信息,下面是JAVA代码实现方式:

// 找到Xml中定义的下拉列表
		Spinner spinner = (Spinner) findViewById(R.id.spinner);
		// 准备一个数组适配器
		ArrayAdapter adapter = ArrayAdapter.createFromResource(
				MainActivity.this, R.array.colors,
				android.R.layout.simple_spinner_dropdown_item);
		// 设置下拉样式
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		// 为下拉列表设置适配器
		spinner.setAdapter(adapter);
		// 定义子元素选择监听器
		OnItemSelectedListener oisl = new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this,
						"选择的色彩: " + arg0.getItemAtPosition(arg2).toString(),
						Toast.LENGTH_LONG).show();
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {

			}
		};
		// 为下拉列表绑定事件监听器
		spinner.setOnItemSelectedListener(oisl);

很显然,需要给他提供一个adapter,来填充每一列中的布局及内容。

在上面的例子中,为展开和展开后的UI格式采用了Android自定义的格式,都可以自行定义。

ArrayAdapter adapter = new ArrayAdapter(this,R.layout.item,R.id.textView,list);

在上面的例子中,我们使用某个ArrayAdapter的构造函数,其中第一个参数是context,第二个参数指定下来菜单的每个条目的样式,第三个参数指定了在每个条目样式中用于显示数据的TextView的Id,第四个参数为列表的数据来源(可以是任何格式,toString()就是相应的赋值)。

有些情况下,我们可能需要自定义spinner的布局,或者想要动态的添加和删除spinner中的数据;下方有事例代码,其中分为两个.xml文件:activity.xml,textview.xml;

.java:

public class MainActivity extends Activity {

	Spinner spinner;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		spinner = (Spinner) findViewById(R.id.spinner);
		List<String> list = new ArrayList<String>();
		//假如这是默认的数据
		list.add("test");
		//自定义spinner的样式
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(
				MainActivity.this,
				android.R.layout.simple_spinner_dropdown_item, list){
			@Override
			public View getDropDownView(int position, View convertView,
					ViewGroup parent) {
				View view = getLayoutInflater().inflate(R.layout.textview, parent,false);
				TextView tv = (TextView) view.findViewById(R.id.tv);
				tv.setText(""+getItem(position));
				if(spinner.getSelectedItemPosition() == position){
					view.findViewById(R.id.im).setVisibility(View.VISIBLE);
				}
				return view;
			}
		};
		//向spinner中添加数据
		for (int i = 0; i < 5; i++) {
			adapter.add("item:" + i + "");
		}
		//向spinner中删除数据
		for (int i = 0; i < 3; i++) {
			adapter.remove("item:1");
		}
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinner.setAdapter(adapter);
		spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				Toast.makeText(MainActivity.this, "" + position,
						Toast.LENGTH_LONG).show();
			}

			@Override
			public void onNothingSelected(AdapterView<?> parent) {

			}
		});
	}

}
texiview.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/im"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" />

</LinearLayout>
activity_main.xml:

   <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值