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()方法;使用==时无效