1 main.xml檔案如下<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/TextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/tip" android:textColor="@color/white" android:textSize="24dip" > </TextView> <GridView android:id="@+id/GridView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:verticalSpacing="5dip" android:horizontalSpacing="5dip" android:stretchMode="columnWidth" > </GridView></LinearLayout>說明:總體是一個垂直方向的線性布局,一個TextView,然後緊接是一個GridView,這和ListView很類似2 grid_row.xml如下:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:id="@+id/linerLayout_grid_row" > <ImageView android:id="@+id/ImageView_grid_row" android:scaleType="fitXY" android:layout_width="100dip" android:layout_height="98dip"></ImageView><TextView android:id="@+id/TextView_grid_row" android:layout_width="140dip" android:layout_height="wrap_content" android:textColor="@color/white" android:textSize="24dip" android:paddingLeft="5dip"> </TextView></LinearLayout>說明:整體是一個水平方向的線性布局,先是一個ImageView,在其右邊是一個TextView 3 Activity如下package cn.com.baidu;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.GridView;import android.widget.LinearLayout;import android.widget.SimpleAdapter;import android.widget.TextView;//注意://1 GridView和ListView的資料的綁定非常相似.在hashMap.put("col1", drawableIDs[i]);處我們往此hashMap裡// 放入的是圖片的ID(即在R檔案中產生的圖片ID),而不是真正的圖片資料.在綁定時系統會根據此ID自動載入對應的圖片//2 方法 new SimpleAdapter(this, createDataList(), R.layout.grid_row, new String []{"col1","col2"}, new int []{R.id.ImageView_grid_row,R.id.TextView_grid_row});// gridView.setAdapter(simpleAdapter);此方法的參數和使用ListView時的適配器參數基本上一樣的// 第一個參數:內容物件// 第二個參數:要被繫結資料(List)// 第三個參數:接收此繫結資料的布局// 第四個參數:被綁定資料的鍵// 第五個參數:把這些鍵分別綁到布局的哪個控制項中// 第二和三個參數是從宏觀來描述的,第四和五個參數是從微觀的角度進一步描述的//3 此例中分別監聽獲得焦點和被點擊的處理情況.這點很有借鑒意義public class TestGridViewActivity extends Activity {private GridView gridView;private ArrayList<Map<String,Object>> arrayList;private TextView textView; int drawableIDs []={R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e}; int jjs []={R.string.jja,R.string.jjb,R.string.jjc,R.string.jjd,R.string.jje}; public List createDataList(){arrayList=new ArrayList<Map<String,Object>>();for(int i=0;i<jjs.length;i++){HashMap<String, Object> hashMap=new HashMap<String, Object>();hashMap.put("col1", drawableIDs[i]);//第一列為照片hashMap.put("col2", this.getString(jjs[i]));//第二列為名字arrayList.add(hashMap);}return arrayList;} @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); gridView=(GridView) findViewById(R.id.GridView); SimpleAdapter simpleAdapter= new SimpleAdapter(this, createDataList(), R.layout.grid_row, new String []{"col1","col2"}, new int []{R.id.ImageView_grid_row,R.id.TextView_grid_row}); gridView.setAdapter(simpleAdapter);//為GridView設定適配器 gridView.setOnItemSelectedListener(new OnItemSelectedListener() {//當條目獲得焦點時的處理@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) { textView=(TextView) findViewById(R.id.TextView);LinearLayout linearLayout=(LinearLayout) view;//獲得焦點的條目.每個條目都是一個LinearLayoutTextView childTextView=(TextView) linearLayout.getChildAt(1);//.獲得此條目中的TextView顯示的名字.從0開始,所以為1textView.setText(childTextView.getText().toString());//然後在另外一個(即主TextView)中顯示}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}}); gridView.setOnItemClickListener(new OnItemClickListener() {//當條目獲被點擊時的處理.同上.@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {textView=(TextView) findViewById(R.id.TextView);LinearLayout linearLayout=(LinearLayout) view;TextView childTextView=(TextView) linearLayout.getChildAt(1);//???textView.setText(childTextView.getText().toString());}}); } }