Android控件及API说明(三)
16lz
2021-01-23
1、Spinner
老规矩,先设置布局文件:
在res/values/下面创建一个文件string.xml文件,文件内容如下:
<string>标签里面的name属性,是作为Spinner的标题的。
<string-array>这个就不用解释了。
下面需要创建一个内部类,这个内部类实现了接口AdapterView.OnItemSelectedListener
当某个选项被选择了之后,会给你的应用程序一个回调函数(callback).
请注意:下面这段代码是一个内部类,不是一个单独的类!!
2、ListView的使用:
注意:要使用ListView ,相应的Activity 要从ListActivity继承。
通常的Activity需要显示的话,我们是调用下面的代码:
但是使用ListView时不是这样的,按照下面这种方式:
我们可以把setListAdapter方法中的android.R.layout.simple_list_item_1换成自定义的:
在 res/layout/ 目录下见一个文件: list_item.xml
然后将android.R.layout.simple_list_item_1换成R.layout.list_item即可。
最后,定义COUNTRIES。
上面的做法是将ListView里面需要显示的值放在数组中,这种硬编码的方式显然不是很好,下面采用另一种方式:
在res/values/下面新建一个文件:strings.xml
将相应地方的代码换成如下的代码:
老规矩,先设置布局文件:
<Spinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/planet_prompt"/>
在res/values/下面创建一个文件string.xml文件,文件内容如下:
<?xml version="1.0" encoding="utf-8"?><resources> <string name="planet_prompt">Choose a planet</string> <string-array name="planets_array"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array></resources>
<string>标签里面的name属性,是作为Spinner的标题的。
<string-array>这个就不用解释了。
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());}
下面需要创建一个内部类,这个内部类实现了接口AdapterView.OnItemSelectedListener
当某个选项被选择了之后,会给你的应用程序一个回调函数(callback).
请注意:下面这段代码是一个内部类,不是一个单独的类!!
public class MyOnItemSelectedListener implements OnItemSelectedListener {@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { Toast.makeText(parent.getContext(), "The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); }@Override public void onNothingSelected(AdapterView parent) { // Do nothing. }}
2、ListView的使用:
注意:要使用ListView ,相应的Activity 要从ListActivity继承。
通常的Activity需要显示的话,我们是调用下面的代码:
setContentView(int);
但是使用ListView时不是这样的,按照下面这种方式:
setListAdapter(ListAdapter);
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, COUNTRIES)); ListView lv = getListView(); lv.setTextFilterEnabled(true); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); } });}
我们可以把setListAdapter方法中的android.R.layout.simple_list_item_1换成自定义的:
在 res/layout/ 目录下见一个文件: list_item.xml
<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:textSize="16sp" ></TextView>
然后将android.R.layout.simple_list_item_1换成R.layout.list_item即可。
最后,定义COUNTRIES。
static final String[] COUNTRIES = new String[] {"China","France","England"};
上面的做法是将ListView里面需要显示的值放在数组中,这种硬编码的方式显然不是很好,下面采用另一种方式:
在res/values/下面新建一个文件:strings.xml
<?xml version="1.0" encoding="utf-8"?><resources> <string-array name="countries_array"> <item>Bahrain</item> <item>Bangladesh</item> <item>Barbados</item> <item>Belarus</item> <item>Belgium</item> <item>Belize</item> <item>Benin</item> </string-array></resources>
将相应地方的代码换成如下的代码:
String[] countries = getResources().getStringArray(R.array.countries_array);setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, countries));
更多相关文章
- Android第一行代码笔记
- Android的源代码结构
- Android开发常用代码片段(二)
- Android——文件存储
- 修改android框架代码
- Android layout文件中 '?' 的作用
- :如何安装apk文件在Android仿真器中
- Android有用代码片断(六)
- Android--第一行代码笔记(2)