1、先來看下布局檔案
<?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:columnWidth="170dp" android:gravity="center" android:horizontalSpacing="30dp" android:numColumns="auto_fit" android:paddingBottom="20dp" android:paddingLeft="20dp" android:paddingRight="20dp" android:paddingTop="20dp" android:stretchMode="columnWidth" android:verticalSpacing="20dp" />
2、繼承一個BaseAdapter寫一個PictureAdapter
class PictureAdapter extends BaseAdapter {private LayoutInflater inflater;private List<Picture> pictures; //建構函式public PictureAdapter(String[] titles, int[] images, Context context) {super();pictures = new ArrayList<Picture>();inflater = LayoutInflater.from(context);for (int i = 0; i < images.length; i++) {Picture picture = new Picture(titles[i], images[i]);pictures.add(picture);}}@Overridepublic int getCount() {// TODO Auto-generated method stubif (null != pictures) {return pictures.size();} else {return 0;}}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubSystem.out.println("--" + position);return pictures.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubSystem.out.println("--1---" + position);return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder viewHolder;if (convertView == null) {convertView = inflater.inflate(R.layout.picture_item, null);viewHolder = new ViewHolder();viewHolder.title = (TextView) convertView.findViewById(R.id.title);viewHolder.image = (ImageView) convertView.findViewById(R.id.image);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.title.setText(pictures.get(position).getTitle());viewHolder.image.setImageResource(pictures.get(position).getImageId());return convertView;}}class ViewHolder {public TextView title;public ImageView image;}class Picture {private String title;private int imageId;public Picture() {super();}public Picture(String title, int imageId) {super();this.title = title;this.imageId = imageId;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public int getImageId() {return imageId;}public void setImageId() {this.imageId = imageId;}}
3、R.layout.picture_item布局檔案
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:orientation="vertical" > <ImageView android:id="@+id/image" android:layout_width="120dp" android:layout_height="120dp" android:layout_gravity="center" android:padding="4dp" android:scaleType="fitXY" /> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center_horizontal" android:textColor="#ff501e58" android:textSize="22dip"/></LinearLayout>
4、變數聲明
private String[] titles;private GridView gridView;private int[] images;
5、填充資料並調用
其中下面的執行是先為titles 與images數組賦值,這裡不再給出
gridView = (GridView) findViewById(R.id.gridview);PictureAdapter adapter = new PictureAdapter(titles, images, this);gridView.setAdapter(adapter);gridView.setOnItemClickListener(new OnItemClickListener() {public void onItemClick(AdapterView<?> parent, View v,int position, long id) {//點擊對應Item時的相應...}});