GridView的視圖排列方式與矩陣類似,當螢幕上有很多元素(文字、圖片或其他元素)需要顯示時,可以使用GirdView。既然有多個元素要顯示,就需要使用BaseAdapter來存儲這些元素。使用者可能會選擇其中一個元素進行操作,這就需要設置事件監聽 setOnItemClickListener來捕捉和處理事件。
package dev.Demo;

 

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

 

public class ImageAdapter extends BaseAdapter{

 

//定義Context
private Context mContext;
//定義整型陣列 即圖片源
private Integer[] mImageIds =
{
R.drawable.img1,
R.drawable.img2,
R.drawable.img3,
R.drawable.img4,
R.drawable.img5,
R.drawable.img6,
R.drawable.img7,
R.drawable.img8,
};

 

public ImageAdapter(Context c){
mContext = c;
}

 

//獲取圖片個數
public int getCount() {
return mImageIds.length;
}
//獲取圖片在庫中的位置
public Object getItem(int position) {
return position;
}
//獲取圖片ID
public long getItemId(int position) {
return position;
}

 

public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null ) {
//給ImageView設置資源
imageView = new ImageView(mContext);
//設置佈局 圖片120*120顯示
imageView.setLayoutParams(new GridView.LayoutParams(85,85));
//設置顯示比例類型
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
}
else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mImageIds[position]);
return imageView;
}
}
複製代碼
package eoe.demo;

 

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

 

public class Activity01 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

 

//獲取GridView物件
GridView gridview = (GridView) findViewById(R.id.gridview);
//添加元素給gridview
gridview.setAdapter(new ImageAdapter(this));

 

//設置Gallery背景
gridview.setBackgroundResource(R.drawable.bg0);

 

//事件監聽
gridview.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//此處的position為ID 所以要+1
Toast.makeText(Activity01.this, "你選擇了"+ (position + 1) + "號圖片", Toast.LENGTH_SHORT).show();
}
});
}
}
複製代碼
佈局代碼:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
>
<!--
屬性說明
android:numColumns="auto_fit" GridView的列數設置為自動
android:columnWidth="90dp",每列的寬度,也就是Item的寬度
android:stretMode="columnWidth" 縮放與列寬大小同步
android:verticalSpacing="10dp" 兩行之間的邊距
android:horizontalSpacing="10dp" 兩列之間的邊距
-->
</GridView>
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()