ListView—列表框
ListView 是列表选择组件,垂直列表的形式列出需要显示的列表项(功能列表)
常用的ListView的xml属性
android:divider 用于列表驶入设置分割条,既可以用颜色分隔也可以用Drawable资源分隔
android:dividerHeight 用于设置分隔条的高度
android:entries 用于通过数组资源为ListView指定列表利用适配器ArrayAdapter来添加数组资源, 在ListView中添加选项的方式有两种:
1、String.xml文件中string-array标记添加——针对列表项可知且是固定的
利用xml创建的数组,要通过ArrayAdapter.createFromResource()方法来添加
//创建适配器并添加数组资源
ArrayAdapter<charSequence> adapter = ArrayAdapter.createFromResource(this,R.array.ctype,android.R.layout.simple_list_item_checked,ctype);
//其中的ctype为<String-array name="ctype">
//android.R.layout.simple_list_item_checked为ListView的外观样式
ListView指定的外观形式通常有以下5种:
- simple_list_item_1 每个列表项都是一个普通文本
- simple_list_item_2 每个列表项都是一个普通文本(字体略大)
- simple_list_item_checked 每个列表项都是一个已勾选的列表项
- simple_list_item_multiple_choice 每个列表项都是带多选框的文本
simple_list_item_single_choice 每个列表项都是带单选按钮的文本
2、在java文件中创建数组或函数—返回值为List类型
listView = (ListView)this.findViewById(R.id.listView1);
ArrayAdapter myAdapter = new ArrayAdapter (this,android.R.layout.simple_list_item_checked,getData());
listView.setAdapter(myAdapter);
//给ListView添加列表项点击事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,long arg3) {
// TODO Auto-generated method stub
//得到列表框的选项
String result=parent.getItemAtPosition(position).toString();
Toast.makeText(MainActivity.this, result,1).show();
}
});
//其中数组资源函数
public List<String> getData(){
List<String > list = new ArrayList<String>();
for(int i = 0; i<100;i++){
list.add("jack"+i);
}
return list;
}
- 让Activity继承ListActivity
继承ListActivity,无须调用setContentView,直接创建适配器,然后使用setListAdapter()方法将其添加到列表中
public class MainActivity extends ListActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
//新建数据项
String[] ctype = {"上网","唱歌","跳舞"};
//创建适配器,添加数组资源
ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_single_choice,ctype);
//设置该窗口中显示的列表
setListAdapter(myAdapter);
}
////以上是在onCreate()方法中////
//给ListView表项添加点击事件,重写onListItemClick()方法
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,long arg3) {
// TODO Auto-generated method stub
//得到列表框的选项
String result=parent.getItemAtPosition(position).toString();
Toast.makeText(MainActivity.this, result,1).show();
}
}
Spinner—下拉列表框
Spinner列表框相当于在网页中常见的下拉列表框
添加数据有两种方法:
- 1、String.xml文件中标记添加——针对列表项可知且是固定的
<string-array name="spinnerData"
<item >北京</item>
<item >杭州</item>
<item >南京</item>
<item >上海</item>
</string-array>
//然后创建适配器
adapter = ArrayAdapter.createFromResource(this, R.array.spinnerData, android.R.layout.simple_spinner_dropdown_item);
//将适配器与Spinner关联
spinner1.setAdapter(adapter);
//注册spinner1的监听器
spinner1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,long arg3) {
// TODO Auto-generated method stub
//得到列表框的选项
String result=parent.getItemAtPosition(position).toString();
Toast.makeText(MainActivity.this, result,1).show();
}
});
- 2在java文件中使用字符串数组来创建 String[] name= {} 或 建List getData()函数
public List<String> getDateRource(){
List<String> list = new ArrayList<String>();
list.add("北京");
list.add("南京");
list.add("上海");
list.add("杭州");
return list;
}
/////在onCreate()方法中来添加列表框Spinner
//创建适配器,并将数据添加到适配器中
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item,getDateRource());
//Spinner与适配器相关联
spinner.setAdapter(adapter);
//为列表框添加OnItemSelectedListener事件监听
spinner.setOnItemSelectedListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,long arg3) {
// TODO Auto-generated method stub
//得到列表框的选项
String result=parent.getItemAtPosition(position).toString();
Toast.makeText(MainActivity.this, result,1).show();
}
} )