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>