Spinner列表理解
ArrayAdapter 适配器是用于列表填充数据的 final 变,变量为常量,一经赋值永不改变。和静态变量有点像
借鉴:https://blog.csdn.net/nkdwslsd/article/details/52336212
一、构造函数
1、布局中一个TextView: 直接在上下文后接布局就行 如下:三个参数
arrayAdapter=new ArrayAdapter(Adapter_Activity.this,
android.R.layout.simple_spinner_item,
Colors);
// 数据:final String []Colors=new String[]{“红色”, “黄色”, “紫色”, “白色”, “黑色”, “蓝色”};
2、布局中有多个TextView:需在上下文后接布局文件,之后在布局文件后接你指定那个TextView的ID来显示你选项 如下:四个参数
arrayAdapter=new ArrayAdapter(Adapter_Activity.this,
android.R.layout.simple_spinner_item,
R.id.tv,
Colors);
注意: 应该可以是其他布局,条件是该布局中必须有TextView,如果是多个要指定使用的TextView ID。 这里的布局文件是给单个的(Item)TextView的布局。
3、设置下拉列表的布局:为单个列表项设置布局之后,还要给下拉列表设置布局才算是一个Spinner列表的创建成功。
列表项的布局:每个选项的式样
arrayAdapter;//适配器是用于列表填充数据的 final 变 变量为常量,一经赋值永不改变。和静态变量有点像
//创建一个数组适配器
final ArrayAdapter arrayAdapter=new ArrayAdapter
(Adapter_Activity.this,android.R.layout.simple_spinner_item,Colors);
//下拉列表的布局:全部列表项的布局
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item );
//已经绑定数据了的适配器和列表关联
dynamic_spinner.setAdapter(arrayAdapter); //一个列表创建完成
4、注册监视器:每个列表使用的监视器是不同的 ,Spinner只能注册
.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() …);
有两个方法
// 列表项被选中
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//如果arrayAdapter不是final 也不是static 那么他的值是可以随意变化的 定义成局部变量不会消失的吗?
Log.i(TAG,“选中:”+arrayAdapter.getItem(position));
}
//列表项未被选中
public void onNothingSelected(AdapterView<?> parent) {
//如果数据源清空后,调用适配器的刷新方法时执行此方法。
Log.i(TAG,“未选中”);
}
二、代码展示
private void init() { //自定义初始化方法
return_MainActivity=findViewById(R.id.return_mainActivity);
static_spinner=findViewById(R.id.static_spinner);
dynamic_spinner=findViewById(R.id.dynamic_spinner);
/*应该可以是其他布局条件是该布局中必须有TextView:
1、布局中一个TextView: 直接在上下文后接布局就行 如下:三个参数
arrayAdapter=new ArrayAdapter<String>(Adapter_Activity.this,
android.R.layout.simple_spinner_item,
Colors);
2、布局中有多个TextView:需在上下文后接布局文件,之后在布局文件后接你指定那个TextView的ID来显示你选项 如下:四个参数
arrayAdapter=new ArrayAdapter<String>(Adapter_Activity.this,
android.R.layout.simple_spinner_item,
R.id.tv,
Colors);
*/
//列表项的布局:每个选项的式样
// arrayAdapter;//适配器是用于列表填充数据的 final 变 变量为常量,一经赋值永不改变。和静态变量有点像
final ArrayAdapter arrayAdapter=new ArrayAdapter
(Adapter_Activity.this,android.R.layout.simple_spinner_item,Colors);
//下拉列表的布局:全部列表项的布局
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item );
//已经绑定数据了的适配器和列表关联
dynamic_spinner.setAdapter(arrayAdapter);
//不同的列表允许注册的监视器是不用的spinner只能注册这个监视器
dynamic_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//如果arrayAdapter不是final 也不是static 那么他的值是可以随意变化的 定义成局部变量不会消失的吗?
Log.i(TAG,"选中:"+arrayAdapter.getItem(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//如果数据源清空后,调用适配器的刷新方法时执行此方法。
Log.i(TAG,"未选中");
}
});
return_MainActivity.setOnClickListener(this);
}