Android开发
3、Android高级控件的使用:
Spinner的使用方法:
使用ArrayAdapter
- // 初始化控件
- Spinner spinner = (Spinner) findViewById(R.id.spinner1);
- // 建立数据源
- String[] mItems = getResources().getStringArray(R.array.languages);
- // 建立Adapter并且绑定数据源
- ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- //绑定 Adapter到控件
- spinner .setAdapter(adapter);
- spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view,
- int pos, long id) {
- String[] languages = getResources().getStringArray(R.array.languages);
- Toast.makeText(MainActivity.this, "你点击的是:"+languages[pos], 2000).show();
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- // Another interface callback
- }
- });
这是Spinner的标准使用方法,其中,有两行代码可以决定Spinner的外观:
1
- ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);
第二个参数是Spinner未展开菜单时Spinner的默认样式,android.R.layout.simple_spinner_item是系统自带的内置布局。
2
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
设置的是展开的时候下拉菜单的样式(注意和上面区别),同理android.R.layout.simple_spinner_dropdown_item也是内置布局。
如果不设置adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)会怎样呢?
会造成未展开的sipnner和展开的菜单都是一种布局样式。下面一运行截图来说明:
没有adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item):
有setDropDownViewResource:
你可能会很好奇如果设置了setDropDownViewResource但是setDropDownViewResource的参数和ArrayAdapter的第二个布局参数(simple_spinner_item)一致的情况下会怎样。情况是和没有setDropDownViewResource是一样的,因为上面说了不设置setDropDownViewResource Spinner未展开和展开都是用的一样的布局。
其实simple_spinner_item和simple_spinner_dropdown_item两者的名字正好反映了他们的区别。一个应用于下拉一个应用于Spinner本身。