android开发中有一个非常重要的组件之一——ListView,我们使用的软件基本都会用到ListView。
提到ListView,有三个元素组成来显示出列表效果,分别是:
① 视图View,也就是ListView视图。
② 数据,用来显示的数据。
③ 适配器Adapter,用来将数据映射到视图上。
其中最简单的适配器为ArrayAdapter,它用来适配文本,如果界面不复杂,就可以用它来做适配。下面我们来看一下它的用法。
运行效果:
代码示例:
ArrayAdapter_Aty.java
import com.example.practice.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ArrayAdapter_Aty extends Activity {
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_aty);
listView = (ListView) findViewById(R.id.listView);
// 数据
String tvText[] = { "data1", "data2", "data3", "data4", "data5",
"data6", "data6", "data8", };
// Adapter1:三个参数
/*
* 参数1:上下文context;参数2:一个TextView布局的资源ID,也就是以TextView为根标签的布局文件的名称;
* 参数3:数据, 一个String[]数组,被映射的数据;
*/
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
R.layout.listview_item1, tvText);
// Adapter2:四个参数
/*
* 参数1:context,上下文;参数2:resource,布局id,也就是每一个item所对应的布局文件;
* 参数3:textViewResourceId,参数2对应的布局里面的TextView控件的id;参数4:objects;
*/
// ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(context,
// resource, textViewResourceId, objects);
listView.setAdapter(adapter1);
}
}
可以看到,上面的Activity里的ArrayAdapter有两个构造方法,分别是三个参数的和四个参数的,运行效果是一样的,差别就在于适配的布局文件。
第一个适配器Adapter1是一个以TextView为根标签,这个布局内只能有TextView这一个控件;
而第二个适配器Adapter2是一个普通的布局文件,TextView只是它内部的一个控件而已。
Adapter1用起来更简单容易,但是如果你需要用的这个列表的每一个item除了要适配文本外还有别的内容,就只能使用Adapter2了。
listview_aty.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</LinearLayout>
listview_item1.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/arrayAdapter_tv_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:padding="32dp" >
</TextView>