android中的資料能夠通過gridview類實作表格化展現,它也屬于清單類型的控件,其繼承關系如下:
java.lang.object
↳ android.view.view
↳ android.view.viewgroup
↳ android.widget.adapterview<t extends android.widget.adapter>
↳ android.widget.abslistview
↳ android.widget.gridview
gridview控件應用案例效果如圖6-10所示。

圖6-10 gridview控件使用效果圖
程式代碼請參考代碼清單6-8:
【代碼清單6-8】 chapter6_4/src/com/work/gridview_1.java
public class gridview_1 extends activity {
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.grid);
gridview g = (gridview) findviewbyid(r.id.mygrid);
g.setadapter(new imageadapter(this));
g.setonitemselectedlistener(new onitemselectedlistener() {
public void onitemselected(adapterview<?> parent, view view,
int position, long id) {
toast.maketext(gridview_1.this, "圖檔id:" + mthumbids[position],
toast.length_short).show();
}
public void onnothingselected(adapterview<?> parent) {
});
private integer[] mthumbids = { r.drawable.yellowimage,
r.drawable.redimage, r.drawable.icon, r.drawable.blueimage,
r.drawable.photo1962, r.drawable.photo189, r.drawable.photo1803,
r.drawable.photo1796, r.drawable.photo1732, r.drawable.photo1553,
r.drawable.photo1537, r.drawable.photo1503, r.drawable.photo1453,
r.drawable.photo1450, r.drawable.photo1447, r.drawable.photo1441,
r.drawable.photo1433, r.drawable.photo1432, r.drawable.photo1431,
r.drawable.photo1426, r.drawable.photo1425, r.drawable.photo1424,
r.drawable.photo1423, r.drawable.photo1422, r.drawable.photo142,
r.drawable.photo140, r.drawable.photo1220, r.drawable.photo1208,
r.drawable.photo1207, r.drawable.photo101209, };
public class imageadapter extends baseadapter {
private context mcontext;
public imageadapter(context c) {
mcontext = c;
public int getcount() {
return mthumbids.length;
public object getitem(int position) {
return position;
public long getitemid(int position) {
public view getview(int position, view convertview, viewgroup parent) {
imageview imageview;
if (convertview == null) {
imageview = new imageview(mcontext);
imageview.setlayoutparams(new gridview.layoutparams(60, 60));
imageview.setpadding(8, 8, 8,
;
} else {
imageview = (imageview) convertview;
imageview.setimageresource(mthumbids[position]);
return imageview;
代碼的關鍵是實作baseadapter擴充卡類——imageadapter,代碼如下:
在convertview為null的時候執行個體化控件,imageview.setlayoutparams(new gridview.layoutparams(60, 60)是設定一個單元格中圖檔大小是60×60像素。imageview.setpadding(8, 8, 8,
設定gridview的單元格與其中的圖檔之間上、下、左、右空白。
布局檔案chapter6_4/res/layout/grid.xml:
<?xml version="1.0" encoding="utf-8"?>
<gridview xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mygrid2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:verticalspacing="10dp"
android:horizontalspacing="10dp"
android:numcolumns="auto_fit"
android:columnwidth="60dp"
android:gravity="center"
/>
android:verticalspacing="10dp"是兩行之間的邊距,android:horizontalspacing="10dp"是兩列之間的邊距。android:numcolumns="auto_fit"gridview列數設定為自動,android:columnwidth="60dp"是每列的寬度,也就是項目的寬度。android:gravity="center"是居中。
出自《android開發案例驅動教程》第六章