這一章我們來介紹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. */
@Override
public 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()
{
@Override
public 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. */
@Override
public 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()
{
@Override
public 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,運行一下,如圖下:
看,是不是像通輯海報啊,呵呵,這樣妖怪都認得唐僧師徙瞭。好瞭,這一章就結束瞭。謝謝支持
摘自:kangkangz4的專欄