简谈GridView

原创 2012年03月28日 10:10:29

GridView是网格形势布局的一种View,要实现它就要设置它的Adapter,GridView的Adapter都是ListAdapter的子类或者间接子类.Adapter其实是起桥接作用的,它把你想要显示的资源放入你指定的组件里面,然后自动地添加进GridView里面。

ListAdapter的父子关系:

现在的例子是:将数张图片资源放进项目的res/drawable里面,将这些图片显示在GridView中,当点击图片的时候会以Toast提醒用户所选图片的ID号.

程序运行结果:


main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <GridView
        android:id="@+id/myphoto"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:columnWidth="90dp"
        android:horizontalSpacing="10dp"
        android:numColumns="3"
        android:verticalSpacing="10dp" >
    </GridView>

</LinearLayout>

GridViewDemo.java:

public class GridViewDemo extends Activity
{
	private GridView gridView;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		gridView = (GridView) findViewById(R.id.myphoto);
		gridView.setAdapter(new ImageAdapter(this));

		gridView.setOnItemClickListener(new OnItemClickListener()
		{
			public void onItemClick(AdapterView<?> parent, View view, int position, long id)
			{
				Toast.makeText(GridViewDemo.this, "当前被点击的图片ID是:" + position, Toast.LENGTH_SHORT).show();
			}
		});
	}

	/**
	 * 自定义的适配器,用来桥接GridView和需要显示的数据
	 */
	class ImageAdapter extends BaseAdapter
	{
		private Context context;
		// 图片对应的资源ID
		private List<Integer> imgID;

		ImageAdapter(Context context)
		{
			this.context = context;
			this.imgID = new ArrayList<Integer>();
			// 利用反射机制得到R.drawable类里面的属性,即为图片资源ID
			Field[] field = R.drawable.class.getDeclaredFields();
			for (Field myfield : field)
			{
				// 除去程序启动图标
				if (!"icon_lunch".equals(myfield.getName()))
					try
					{
						// 得到属性值
						Integer index = myfield.getInt(R.drawable.class);
						imgID.add(index);
					}
					catch (Exception e)
					{
						e.printStackTrace();
					}
			}

			// imgID.add(R.drawable.sample_0);
			// imgID.add(R.drawable.sample_1);
			// imgID.add(R.drawable.sample_10);
			// imgID.add(R.drawable.sample_11);
			// imgID.add(R.drawable.sample_12);
			// imgID.add(R.drawable.sample_2);
			// imgID.add(R.drawable.sample_3);
		}

		public int getCount()
		{
			return imgID.size();
		}

		public Object getItem(int position)
		{
			// TODO Auto-generated method stub
			return null;
		}

		public long getItemId(int position)
		{
			// TODO Auto-generated method stub
			return position;
		}

		/**
		 * 将对应的资源封装到你定义的组件里,这里是ImageView
		 */
		public View getView(int position, View convertView, ViewGroup parent)
		{
			ImageView imgView;
			// 首先判断是否已经存在ImageView,防止重复加载
			if (null == convertView)
			{
				imgView = new ImageView(context);
				imgView.setScaleType(ImageView.ScaleType.CENTER_CROP);
				imgView.setLayoutParams(new GridView.LayoutParams(100, 100));
				imgView.setPadding(8, 8, 8, 8);
			}
			else
				imgView = (ImageView) convertView;
			imgView.setImageResource(imgID.get(position));
			return imgView;
		}
	}
}
关键就在于实现自己的Adapter

GridView控件的简单使用

如果是多行单列,使用listview; 如果是多行多列,使用gridview;activity_main.xml
  • CL18652469346
  • CL18652469346
  • 2016年11月29日 16:08
  • 1245

请你谈谈对spring的理解?

1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是有这个IOC容...
  • qq_34360219
  • qq_34360219
  • 2016年10月14日 22:27
  • 3875

学生谈对Mybatis的理解

自学MyBatis遇到的问题及感受 一:遇到的简单问题及处理 1.Book.xml创建命名空间时,运行时出错 Book.xml 的命名空间namespace必须是独一无二的,它可以取任意值,如果...
  • wonderful_life_mrchi
  • wonderful_life_mrchi
  • 2016年09月09日 14:25
  • 41189

Android开发学习笔记:浅谈GridView

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的。主要用于设置Adapter。 GridView常用的...
  • MYBOYER
  • MYBOYER
  • 2013年06月18日 11:44
  • 433

Gridview分页初使用,心得浅谈

最近刚接到网站的任务要做个“人员信息管理系统”,由于才接触.net不久,所以也是一边学习一边制作,各种Geogle,百度之后终于还是搞定了,虽然这个过程比较艰辛,不过总结一下自己还是成长了不少,如下是...
  • hctang99
  • hctang99
  • 2012年10月22日 09:05
  • 349

浅谈GridView

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的。主要用于设置Adapter。 GridView常用的...
  • hanmindi
  • hanmindi
  • 2014年09月12日 10:22
  • 274

浅谈ListView、RecycleView、GridView的使用方法步骤和效果区别.TXT

一、ListView的使用说明:1、LIstView与滚动视图(ScrollView)类似,可以将多个组件加入到ListView之中以达到组件的滚动显示效果, ListView组件本身...
  • ytfunnysite
  • ytfunnysite
  • 2017年02月25日 11:40
  • 562

Android开发学习笔记:浅谈GridView

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的。主要用于设置Adapter。 GridView常用的...
  • hao201011
  • hao201011
  • 2011年12月01日 16:28
  • 1669

浅谈GridView控件的使用

一. 数据绑定简介 数据绑定就是将数据源中的数据显示到数据服务控件中。 数据源可以是数据库表、数组、集合等。 数据服务控件是专门用于在页面上显示数据的一种控件。我们将主要介绍GridView控...
  • gengyudan
  • gengyudan
  • 2013年11月19日 15:34
  • 1747

浅谈android的selector背景选择器(ListView/GridView)

关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法。 首先android的selec...
  • java_zhaoyanli
  • java_zhaoyanli
  • 2015年05月26日 08:48
  • 451
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简谈GridView
举报原因:
原因补充:

(最多只允许输入30个字)