1. 程式人生 > >android學習筆記——GridView控制元件(九宮格佈局)

android學習筆記——GridView控制元件(九宮格佈局)

GridView跟ListView都是比較常用的多控制元件佈局,而GridView更是實現九宮圖的首選! 先來介紹一下要做的工作,有一個完整的思路 1.在activity_main.xml中加一個GridViwe 2.編寫一個自定義的Adapter,在其中完成給每個item與資料來源的繫結。getView()方法 3.回到MainActivity中去使用該Adapter。 4.之後可以為item設定一下點選事件,再做一些別的操作。(下一節在其中插入一個切換圖片的方法) activity_main.xml文件如下 <GridView android:id="@+id/gv_images"     
android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3"               //設定列數為3,可設定自動“auto_fit” android:stretchMode="columnWidth"     //縮放與列寬大小同步 android:horizontalSpacing="10dp"     //兩列之間的邊距 10dp android:verticalSpacing="10dp"       //兩行之間的邊距 10dp     //android:columnWidth="90dp"         //設定每一列的寬度,也可以不用在這裡設定,之後我們會看到。
/> 和以前一樣,View(檢視)和資料進行繫結是需要一個Adapter的。在這我們寫一個自己的Adapter來進行適配。 在寫這個Adapter之前,我們要認真的思考一下該Adapter要做什麼事。 把每一個item設定成一個Image,然後顯示這個GridView。那麼在getView()這個方法中,我們需要用到的引數就是上下文以及資料來源 自定義建構函式就呼之欲出了。看下面程式碼吧 public class ImageAdapter extends BaseAdapter{
    private Context context;     private int[] data
;
    //自定義建構函式
public ImageAdapter(Context context,int [] data){
        this.context = context;
        this.data = data;     }     @Override
public int getCount() {
        return data.length;     }     @Override
public Object getItem(int position) {
        return null;     }     @Override
public long getItemId(int position) {
        return 0;     }     @Override
public View getView(int position, View convertView, ViewGroup parent) {
        //迴圈使用convertView首先要判斷他是否為空,如果是空的,加一個imageView在裡面,用來顯示圖片
if (convertView == null){
            convertView = new ImageView(context);             //設定控制元件的佈局樣式 convertView.setLayoutParams(new GridView.LayoutParams(200,250));      //在這裡設定了一下寬度和高度,對應了上面的列寬,但這是有區別的。這種方式設定的是內容的寬高,而在xml中設定android:columnWidth="90dp"則是限定了列寬,不論內容有多大,只能是顯示90dp         }
        //分配要顯示的圖片
convertView.setBackgroundResource(data[position]);
        return convertView;
    } } 讓我們回到MainActivity中來,在這裡需要做哪些事? 1.獲取佈局中的GridView,和平常控制元件沒有區別 2.初始化資料來源,就用個簡單的陣列儲存吧,因為都是用的id所以int型別就可以 3.這就要呼叫剛才寫的Adapter了,設定一下。gvImage.setAdapter(adapter)。 4.最後給每個item設定一個點選事件gvImage.setOnItemClickListener()。在這裡我們就可以進行一些擴充套件了。 程式碼就不貼了,都是很基礎的了,想不起來就該捱打了~