天天看點

6.1.5 GridView詳解編輯

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.1.5 GridView詳解編輯

圖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,

6.1.5 GridView詳解編輯

;

} else {

imageview = (imageview) convertview;

imageview.setimageresource(mthumbids[position]);

return imageview;

代碼的關鍵是實作baseadapter擴充卡類——imageadapter,代碼如下:

6.1.5 GridView詳解編輯

在convertview為null的時候執行個體化控件,imageview.setlayoutparams(new gridview.layoutparams(60, 60)是設定一個單元格中圖檔大小是60×60像素。imageview.setpadding(8, 8, 8,

6.1.5 GridView詳解編輯

設定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開發案例驅動教程》第六章

繼續閱讀