Android开发学习笔记:为动态添加的Spinner控件绑定数据源以及监听事件

1.利用ArrayAdapter适配器绑定XML文件数据源

LinearLayout LP=new LinearLayout(context);
Spinner spinner=new Spinner(context);
spinner.setId(i);

// 建立数据源
String[] mItems = null;
if(ChildView.getText().toString().equals("数据类型")) {
	mItems = context.getResources().getStringArray(R.array.column_data_type_dropdown);
	LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(120,35);
	spinner.setLayoutParams(layoutParams);
}
else if(ChildView.getText().toString().equals("主键")) {
	mItems = context.getResources().getStringArray(R.array.column_primary_key_dropdown);
	LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(100,35);
	spinner.setLayoutParams(layoutParams);
}
ArrayAdapter<String> adapter=null;
if (mItems != null) {
	 /**
	 * R.layout.support_simple_spinner_dropdown_item:为Android提供的样式
	 */
	adapter=new ArrayAdapter<String>(context,R.layout.support_simple_spinner_dropdown_item,mItems);
}
spinner.setAdapter(adapter);

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
   /**
	*
	* @param parent 当前所操作的Spinner,当某一个Activity中有多个Spinner时,可以根据parent.getId()与R.id.currentSpinner是否相等,
	*                来判断是否你当前操作的Spinner,一般在onItemSelected方法中,通过switch...case...语句来解决多个Spinner的情况
	*
	* @param view
	* @param position   选中的某个Spinner中的某个下拉值所在的位置,一般自上而下从0开始(索引)
	* @param id          与position值一致
	*/
   @Override
   public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
	   Log.i("当前Item索引:",String.valueOf(position));
	   //由于spinner控件数据源默认添加一个空行为第一个Item,同时spinner控件默认选中第一个项目,因此此时需要判断
	   //当当前索引为0时,不执行选择框的选中状态设置代码
	   if(position!=0)
	   //设置当前下拉框所在行的选择框的选中状态(需要注意每个组件是否有父组件)
			( (CheckBox)((LinearLayout)((TableRow)((LinearLayout)parent.getParent()).getParent()).getChildAt(0)).getChildAt(0)).setChecked(true);
   }

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

   }
});

LP.setBackgroundResource(R.drawable.table_shape3);//设置自定义样式(使用的是drawable文件夹中的xml文件)
LP.addView(spinner);


注:当需要判断两个文本值是否相等时,需要使用equals()方法;使用==时无效




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值