Android控件开发之GridView

类概述

一个在平面上可显示多个条目的可滚动的视图组件,该组件中的条目通过一个ListAdapter和该组件进行关联。

GridView是一项显示二维的viewgroup,可滚动的网格。一般用来显示多张图片。

以下模拟九宫图的实现,当鼠标点击图片时会进行相应的跳转链接。

 

效果图

 

[html]  view plain copy
  1. GridView 属性设置  
  2.   
  3. <!--   
  4.   
  5. android:numColumns="auto_fit" ,         GridView的列数设置为自动   
  6. android:columnWidth="90dp",              每列的宽度,也就是Item的宽度  
  7. android:stretchMode="columnWidth",      缩放与列宽大小同步  
  8. android:verticalSpacing="10dp",          两行之间的边距,如:行一(NO.0~NO.2)与行二(NO.3~NO.5)间距为10dp  
  9. android:horizontalSpacing="10dp",        两列之间的边距  
  10.   
  11. -->  


本程序main.xml源码

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <GridView xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:id="@+id/gridview"  
  5.     android:layout_width="fill_parent"   
  6.     android:layout_height="fill_parent"  
  7.     android:numColumns="auto_fit"  
  8.     android:verticalSpacing="10dp"  
  9.     android:horizontalSpacing="10dp"  
  10.     android:columnWidth="90dp"  
  11.     android:stretchMode="columnWidth"  
  12.     android:gravity="center"  
  13. />  


 

item.xml源码

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <RelativeLayout  
  4.     xmlns:android="http://schemas.android.com/apk/res/android"  
  5.     android:layout_height="wrap_content"   
  6.     android:paddingBottom="4dip"  
  7.     android:layout_width="fill_parent">  
  8.   
  9. <ImageView   
  10.     android:layout_height="90dp"   //注:如果使用的图片高度高于Gridview设置的android:columnWidth="90dp" 请更改这里的值  
  11.     android:layout_width="wrap_content"  
  12.     android:layout_centerHorizontal="true"  
  13.     android:id="@+id/itemImage" />  
  14.   
  15. <TextView   
  16.  android:layout_width="wrap_content"  
  17.     android:layout_below="@+id/itemImage"  
  18.     android:layout_height="wrap_content"   
  19.     android:text="TextView01"  
  20.     android:layout_centerHorizontal="true"   
  21.     android:id="@+id/itemText"/>  
  22. </RelativeLayout>  

 

主程序Java源码

[cpp]  view plain copy
  1. package com.sx.GridView;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5.   
  6. import android.app.Activity;  
  7. import android.content.Intent;  
  8. import android.os.Bundle;  
  9. import android.view.View;  
  10. import android.widget.AdapterView;  
  11. import android.widget.AdapterView.OnItemClickListener;  
  12. import android.widget.GridView;  
  13. import android.widget.SimpleAdapter;  
  14.   
  15. public class GridViewActivity extends Activity   
  16. {  
  17.     private String texts[]  = null;  
  18.     private int    images[] = null;  
  19.   
  20.     public void onCreate(Bundle savedInstanceState)   
  21.     {  
  22.         super.onCreate(savedInstanceState);   
  23.         setContentView(R.layout.main);  
  24.   
  25.         images=new int[]  
  26.         {  
  27.         R.drawable.img1,   
  28.         R.drawable.img2,  
  29.         R.drawable.img3,  
  30.         R.drawable.img4,   
  31.         R.drawable.img5,  
  32.         R.drawable.img6,   
  33.         R.drawable.img7,  
  34.         R.drawable.img8  
  35.         };  
  36.   
  37.         texts = new String[]  
  38.         {   
  39.         "宫式布局1",   
  40.         "宫式布局2",  
  41.         "宫式布局3",  
  42.         "宫式布局4",   
  43.         "宫式布局5",   
  44.         "宫式布局6",  
  45.         "宫式布局7",   
  46.         "宫式布局8"  
  47.          };  
  48.   
  49.     GridView gridview = (GridView) findViewById(R.id.gridview);  
  50.           
  51.     ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();  
  52.           
  53.     for (int i = 0; i < 8; i++)  
  54.     {         
  55.         HashMap<String, Object> map = new HashMap<String, Object>();  
  56.         map.put("itemImage", images[i]);          
  57.         map.put("itemText",  texts[i]);  
  58.               
  59.         lstImageItem.add(map);  
  60.     }  
  61.   
  62.         SimpleAdapter saImageItems = new SimpleAdapter(this,   
  63.                         lstImageItem,// 数据源  
  64.                         R.layout.item,// 显示布局  
  65.                         new String[] { "itemImage""itemText" },   
  66.                         new int[] { R.id.itemImage, R.id.itemText });   
  67.           
  68.          gridview.setAdapter(saImageItems);  
  69.   
  70.          gridview.setOnItemClickListener(new ItemClickListener());  
  71.     }  
  72.   
  73.     class ItemClickListener implements OnItemClickListener  
  74.     {  
  75.     parent   发生点击动作的AdapterView  
  76.     view     在AdapterView中被点击的视图(它是由adapter提供的一个视图)。  
  77.     position 视图在adapter中的位置。  
  78.     rowid    被点击元素的行id。  
  79.   
  80.     public void onItemClick(AdapterView<?> parent, View view, int position, long rowid)   
  81.     {       
  82.         //根据图片进行相应的跳转  
  83.         switch (images[position])   
  84.         {  
  85.         case R.drawable.img1:   
  86.             break;  
  87.         }  
  88.     }  
  89.       }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值