Android[初级教程]第七章 GridView控件

 这一章我们来介绍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,运行一下,如图下:

看,是不是像通辑海报啊,呵呵,这样妖怪都认得唐僧师徙了。好了,这一章就结束了。谢谢支持

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值