Android GridView

分享到:

GridView控件是一种和ListView类似的列表控件,GridView官方全的定义是:一个在平面上可显示多个条目的可滚动的视图组件,该组件中的条目通过一个ListAdapter和该组件进行关联。能轻松实现多列效果,例如常见的9宫格图标。文档最后给出了一个GridView实例,可供参考。

GridView常用XML属性:

android:columnWidth 设置列的宽度。关联的方法为:setColumnWidth(int)
android:gravity 设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical 可以多选,用"|"分开。关联方法:setGravity (int gravity)
android:horizontalSpacing 两列之间的间距。关联方法:setHorizontalSpacing(int)
android:numColumns 列数。关联方法:setNumColumns(int)
android:stretchMode 缩放模式。关联方法:setStretchMode(int)
android:verticalSpacing 两行之间的间距。关联方法:setVerticalSpacing(int)

GridView常用方法:

public ListAdapter getAdapter ()
获得与此组件相关的适配器
返回值ListAdapter适配器实例

public void setAdapter (ListAdapter adapter)
设置GridView的数据。
参数adapter 为grid提供数据的适配器

public void setColumnWidth (int columnWidth)
设置GridView的列宽.
参数columnWidth 列的宽度,以像素为单位

public void setGravity (int gravity)
设置控件内容的位置,默认值为:Gravity.LEFT
参数gravity 位置值

public void setHorizontalSpacing (int horizontalSpacing)
设置列间距.
参数horizontalSpacing 列间距值

public void setNumColumns (int numColumns)
设置gridview的列数
参数numColumns 列数值.

public void setSelection (int position)
设置选中的条目.
参数position 数据条目在列表中的索引值(从0开始),如果在可触摸的模式下,在该索引值下的条目将不会被选中,但是该索引值仍然指向该条目

public void setVerticalSpacing (int verticalSpacing)
设置行间距.
参数verticalSpacing 间距值,以像素为单位

GridView实例,先看效果图:

GridView实例

点击某个item时屏幕上会显示对应序号:

GridView实例

本例共由3个文件组成,主布局文件,item布局文件,java源码

main.xml主界面布局代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent" >
         <GridView
          android:id="@+id/gridview"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:columnWidth="95dp"
          android:gravity="center"
          android:horizontalSpacing="15dp"
          android:numColumns="auto_fit"
          android:stretchMode="columnWidth"
          android:verticalSpacing="15dp" />
        </RelativeLayout>

gridview_item.xml布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/LinearLayout1"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:gravity="center"
          android:orientation="vertical" >
         <ImageView
          android:id="@+id/imageView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginTop="10dp"
          android:src="@drawable/ic_launcher" />
         <TextView
          android:id="@+id/textView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="TextView" />
</LinearLayout>

GridViewActivity.java文件代码:

package com.my.androidtest;

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.SimpleAdapter;
import android.widget.GridView;
import android.widget.Toast;
        
public class GridViewActivity extends Activity {
          
	GridView gridview=null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_grid_view);
  
          gridview = (GridView) findViewById(R.id.gridview); 
  
          //生成动态数组,并且转入数据 
          ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>(); 
          for(int i=0;i<9;i++) 
          { 
          HashMap<String, Object> map = new HashMap<String, Object>(); 
          map.put("ItemImage", R.drawable.ic_launcher);//添加图像资源的ID 
          map.put("ItemText", String.valueOf(i));//序号 
          lstImageItem.add(map); 
          } 
         
          SimpleAdapter saImageItems = new SimpleAdapter(this,
          lstImageItem,//数据来源 
          R.layout.gridview_item,//gridview_item的XML实现 
  
          //动态数组与ImageItem对应的子项 
          new String[] {"ItemImage","ItemText"}, 
  
          //ImageItem的XML文件里面的一个ImageView,两个TextView ID 
          new int[] {R.id.imageView1,R.id.textView1}); 
          gridview.setAdapter(saImageItems); 
          //设置点击监听事件 
          gridview.setOnItemClickListener(new ItemClickListener()); 
	}
  
  
	//点击监听事件的实现
	class  ItemClickListener implements OnItemClickListener{
		public void onItemClick(AdapterView<?> AdapterView, View view,int position,long arg3) {
			HashMap<String, Object> mapItem=(HashMap<String, Object>) AdapterView.getItemAtPosition(position);
			Toast.makeText(GridViewActivity.this, (String)mapItem.get("ItemText"), Toast.LENGTH_LONG).show();
		}
    }

}        
昵    称:
验证码:

相关文档:

Android控件
Android基础知识
Android组件
Android实例