這一章我們來介紹GridView控制項,網格視圖,聽名字就知道了,網格嘛,像一張網,就好像西遊記裡蜘蛛精吐出的網一樣,呵呵,又扯到西遊記上去了,千萬別拿磚砸我,呵呵
其實GridView跟ListView差不多的,只是GirdView是多列多行,什嗎?列是什麼意思?我暈,初中學過線軸吧,行是X軸,列就是Y軸啦,如果還不知道的話,那就去百度和Google一下。ListView是單列多行,這是區別。
GridView控制項有一個android:numColumns="2"屬性,這裡設定2就是2列,當然你也可以不設,那就跟ListView一樣啦,單列多行了。
好了,我們來看一下main.xml吧
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"> <TextView android:text="這次妖怪們想抓" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <GridView android:layout_height="wrap_content" android:id="@+id/gridView" android:layout_width="match_parent" android:numColumns="2" android:background="#FFF"></GridView><TextView android:layout_height="wrap_content"android:layout_width="fill_parent" android:text="@string/hello"android:id="@+id/text"></TextView></LinearLayout>
主Activity的java代碼:
import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.GridView;import android.widget.TextView;public class ButtonDemoActivity extends Activity{private TextView text = null;private String[] item = { "唐僧", "孫悟空 ", "豬八戒", "沙和尚" };private ArrayAdapter adapter;private GridView gridView;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);// 通過ID尋找到main.xml中的TextView控制項text = (TextView) findViewById(R.id.text);// 通過ID尋找到main.xml中的GridView控制項gridView = (GridView) findViewById(R.id.gridView);// 設定一個Array適配器,將數組資料放入適配器中adapter = new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line, item);// 對GridView進行適配gridView.setAdapter(adapter);// 設定GridView的監聽器gridView.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3){String str = "這次妖精把" + item[position] + "抓住了!";updateText(str);}});}private void updateText(String string){// 將文本資訊設定給TextView控制項顯示出來text.setText(string);}}
好了,代碼都寫完了,運行一下吧,下
其實GridView控制項用來顯示圖片的多一些,接下來,我們就為西遊記中的主角加點圖片
這次我們要在Layout下建立一個新的layout,為每個grid的單項設定一個樣式,命名為grid_item.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><ImageView android:layout_height="wrap_content" android:id="@+id/item_imageView"android:layout_width="wrap_content" android:src="@drawable/bajie" android:layout_gravity="center"></ImageView><TextView android:text="TextView" android:id="@+id/item_textView"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"></TextView></LinearLayout>
將Activity中的java代碼改為:
import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.GridView;import android.widget.SimpleAdapter;import android.widget.TextView;public class ButtonDemoActivity extends Activity{private TextView text = null;private int[] image = { R.drawable.tangseng, R.drawable.wukong,R.drawable.bajie, R.drawable.shaseng };private String[] item = { "唐僧", "孫悟空 ", "豬八戒", "沙和尚" };private GridView gridView;private SimpleAdapter adapter;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);// 通過ID尋找到main.xml中的TextView控制項text = (TextView) findViewById(R.id.text);// 通過ID尋找到main.xml中的GridView控制項gridView = (GridView) findViewById(R.id.gridView);//建立一個ArrayList列表,內部存的是HashMap列表ArrayList<HashMap<String, Object>> listItems = new ArrayList<HashMap<String, Object>>();//將數組資訊分別存入ArrayList中int len = item.length;for(int i=0; i < len ; i++){HashMap<String, Object> map = new HashMap<String, Object>();map.put("image", image[i]);map.put("item", item[i]);listItems.add(map);}//HashMap中的Key資訊,要與grid_item.xml中的資訊作對應String[] from = {"image", "item"};//grid_item.xml中對應的ImageView控制項和TextView控制項int[] to = {R.id.item_imageView, R.id.item_textView};// 設定一個適配器adapter = new SimpleAdapter(this, listItems, R.layout.grid_item, from, to);// 對GridView進行適配gridView.setAdapter(adapter);// 設定GridView的監聽器gridView.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3){String str = "這次妖精把" + item[position] + "抓住了!";updateText(str);}});}private void updateText(String string){// 將文本資訊設定給TextView控制項顯示出來text.setText(string);}}
OK,運行一下,下:
看,是不是像通輯海報啊,呵呵,這樣妖怪都認得唐僧師徙了。好了,這一章就結束了。謝謝支援