设置列表项监听器android,Android Spinner列表选择框

Spinner

Spinner是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源。

1、直接设置数组源

在res/values/strings.xml中设置数组源

1

2 学生证

3 结婚证

4 军官证

5 党员证

6

然后在MainActivity找到spinner,然后设置默认选择项

1 importandroid.app.Activity;2 importandroid.os.Bundle;3 importandroid.widget.Spinner;4

5 public class MainActivity extendsActivity {6 /**

7 * Spinner列表选择框8 * 是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源9 */

10 @Override11 protected voidonCreate(Bundle savedInstanceState) {12 super.onCreate(savedInstanceState);13 setContentView(R.layout.activity_main);14

15 Spinner spinner =(Spinner) findViewById(R.id.spinner);16

17 spinner.setSelection(2, true);//从0开始18 }19

20

21 }

这里的setSelection(int position, boolean animate)和setSelection(int position) 实现机制有较大区别,当调用前者时重新layout,立即触发onItemSelected函数,作用相当于用手直接点击。而后者设置了下次选择位置:setNextSelectedPositionInt(position); 然后请求Layout;,而requestLayout并非立即执行,仅仅是一个schedule。但是后者可能在重新装载数据然后Layout时丢失了某些状态。

运行效果如图

998772c6e7939c6e41d891942c724f84.png

2、使用适配器,并设置监听

public class MainActivity extendsActivity {/*** Spinner列表选择框

* 是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源*/

//数据源

String[] data = {"妈妈","爸爸","爷爷","奶奶","外公","外婆"};

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Spinner spinner=(Spinner) findViewById(R.id.spinner);//直接使用数组源//spinner.setSelection(2,true);//使用适配器

ArrayAdapter adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, data);

spinner.setAdapter(adapter);//下拉列表选择框,设置监听

spinner.setOnItemSelectedListener(newOnItemSelectedListener() {

@Overridepublic void onItemSelected(AdapterView>parent, View view,int position, longid) {//直接数组源//String name = getResources().getStringArray(R.array.selector)[position];//Toast.makeText(getBaseContext(), name, Toast.LENGTH_SHORT).show();//适配器的时候

String name =data[position];//实质上如果是MainActivity.this也可以,但是如果改成this,会报错。因为这个用了匿名内部类

Toast.makeText(getBaseContext(), name, Toast.LENGTH_SHORT).show();

}

@Overridepublic void onNothingSelected(AdapterView>parent) {//当没有任何选择时调用从没触发过

Log.e("TAG", "从没触发过");

}

});

}

}

运行效果如图:

8257011e599ee0e67bc706c5057fca83.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值