7.2. ListView (列表视图)
与滚动视图(ScrollView)类似的还有一种列表组件(ListView),可以将多个组件加入到ListView之中,以达到组件的
滚动显示效果,ListView组件本身也有对应的ListView类支持,可以通过操作ListView类以完成对此组件的操作。
列表的显示需要三个元素:
1.ListVeiw :用来展示列表的View,可以写在配置里,也可以在Activity程序中new一个
2.适配器 :用来把数据映射到ListView上的中介。
3.数据 :具体的将被映射的字符串,图片,或者基本组件。
根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。
SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表
的形式展示出来。
ListView类的继承结构如下:
|
ListView的常用方法:
ListView(Context context) 创建ListView类的实例化对象 public void setAdapter (ListAdapter adapter) 设置显示的数据 public ListAdapter getAdapter () 返回ListAdapter public void setOnItemSelectedListener (AdapterView.OnItemSelectedListener listener) 当选项选中时触发此事件
|
ListAdapter的已知子类:
Known Indirect Subclasses ArrayAdapter<T>, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, WrapperListAdapter
|
7.2.1. 使用ArrayAdapter来设置ListView组件中的显示数据
- ArrayAdapter简单介绍
|
public ArrayAdapter (Context context, int textViewResourceId, T[] objects) context,就是Activity; textViewResourceId,布局方式;存放数据的数组 |
- 程序演示:
配置:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout> |
程序:
package com.makyan.demo; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class ArrayAdapterActivity extends Activity { private String data[] = { "杨雄工作科技", "www.makyan.cn", "讲师:杨雄进", "中国高校讲师联盟", "www.makyan.com", "咨询邮箱:makyan_sophia@sina.com", "客户服务:makyan_sophia@sina.com ", "客户电话:085147856987", "杨雄社区:bbs.makyan.cn", "我家农产品" }; // 准备出若干个信息而这些信息以后将通过程序加入到内嵌的线性布局文件之中 private ListView listView = null; // 定义ListView组件 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); listView = new ListView(this); // 实例化组件 listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data)); // 为ListView组件设置内容 super.setContentView(listView) ; // 显示组件 listView.setOnItemClickListener(new OnItemClickListenerImpl()); } private class OnItemClickListenerImpl implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> adapter, View arg1, int position,long id) { if(id<-1) { // 点击的是headerView或者footerView return; } int realPosition=(int)id; // 响应代码 Toast.makeText(ArrayAdapterActivity.this, "您喜欢的是:" + adapter.getItemAtPosition(realPosition), position).show(); } } } |