Android入门第八篇之GridView(九宫图)-中国移动开发者社区

GridView跟ListView都是比较常用的多控件布局,而GridView更是实现九宫图的首选!本文就是介绍如何使用GridView实现九宫图。GridView的用法很多,网上介绍最多的方法就是自己实现一个ImageAdapter继承BaseAdapter,再供GridView使用,类似这种的方法本文不再重复,本文介绍的GridView用法跟前文ListView的极其类似。。。。也算是我偷懒一下,嘻嘻嘻嘻。。。。

先来贴出本文代码运行的结果:

本文需要添加/修改3个文件:main.xml、night_item.xml、JAVA源代码。

main.xml源代码如下,本身是个GirdView,用于装载Item:

view plaincopy toclipboardprint?

android:id="@+id/gridview"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:numColumns="auto_fit"

android:verticalSpacing="10dp"

android:horizontalSpacing="10dp"

android:columnWidth="90dp"

android:stretchMode="columnWidth"

android:gravity="center"

/>

介绍一下里面的某些属性:

android:numColumns="auto_fit",GridView的列数设置为自动

android:columnWidth="90dp",每列的宽度,也就是Item的宽度

android:stretchMode="columnWidth",缩放与列宽大小同步

android:verticalSpacing="10dp",两行之间的边距,如:行一(NO.0~NO.2)与行二(NO.3~NO.5)间距为10dp

android:horizontalSpacing="10dp",两列之间的边距。

接下来介绍 night_item.xml,这个XML跟前面ListView的ImageItem.xml很类似:

view plaincopy toclipboardprint?

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_height="wrap_content"

android:paddingBottom="4dip" android:layout_width="fill_parent">

android:layout_height="wrap_content"

android:id="@+id/ItemImage"

android:layout_width="wrap_content"

android:layout_centerHorizontal="true">

android:layout_width="wrap_content"

android:layout_below="@+id/ItemImage"

android:layout_height="wrap_content"

android:text="TextView01"

android:layout_centerHorizontal="true"

android:id="@+id/ItemText">

最后就是JAVA的源代码了,也跟前面的ListView的JAVA源代码很类似,不过多了“选中”的事件处理:

view plaincopy toclipboardprint?

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

GridView gridview = (GridView) findViewById(R.id.gridview);

//生成动态数组,并且转入数据

ArrayList> lstImageItem = new ArrayList>();

for(int i=0;i

{

HashMap map = new HashMap();

map.put("ItemImage", R.drawable.icon);// 添加图像资源的ID

map.put("ItemText", "NO."+String.valueOf(i));// 按序号做ItemText

lstImageItem.add(map);

}

//生成适配器的ImageItem  动态数组的元素,两者一一对 应

SimpleAdapter saImageItems = new SimpleAdapter(this, // 没什么解释

lstImageItem,// 数据来源

R.layout.night_item,//night_item 的XML实现

// 动态数组与ImageItem对应的子项

new String[] {"ItemImage","ItemText"},

//ImageItem 的XML文件里面的一个ImageView,两个TextView ID

new int[] {R.id.ItemImage,R.id.ItemText});

//添加并且显示

gridview.setAdapter(saImageItems);

//添加消息处理

gridview.setOnItemClickListener(new ItemClickListener());

}

//当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件

class  ItemClickListener implements OnItemClickListener

{

public void onItemClick(AdapterView arg0,//The AdapterView where the click happened

View arg1,//The view within the AdapterView that was clicked

int arg2,//The position of the view in the adapter

long arg3//The row id of the item that was clicked

) {

//在本例中arg2=arg3

HashMap item=(HashMap) arg0.getItemAtPosition(arg2);

//显示所选Item的ItemText

setTitle((String)item.get("ItemText"));

}

}

GridView跟ListView都是比较常用的多控件布局,而GridView更是实现九宫图的首选!本文就是介绍如何使用GridView实现九宫图。GridView的用法很多,网上介绍最多的方法就是自己实现一个ImageAdapter继承BaseAdapter,再供GridView使用,类似这种的方法本文不再重复,本文介绍的GridView用法跟前文ListView的极其类似。。。。也算是我偷懒一下,嘻嘻嘻嘻。。。。

先来贴出本文代码运行的结果:

本文需要添加/修改3个文件:main.xml、night_item.xml、JAVA源代码。

main.xml源代码如下,本身是个GirdView,用于装载Item:

view plaincopy toclipboardprint?

android:id="@+id/gridview"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:numColumns="auto_fit"

android:verticalSpacing="10dp"

android:horizontalSpacing="10dp"

android:columnWidth="90dp"

android:stretchMode="columnWidth"

android:gravity="center"

/>

介绍一下里面的某些属性:

android:numColumns="auto_fit",GridView的列数设置为自动

android:columnWidth="90dp",每列的宽度,也就是Item的宽度

android:stretchMode="columnWidth",缩放与列宽大小同步

android:verticalSpacing="10dp",两行之间的边距,如:行一(NO.0~NO.2)与行二(NO.3~NO.5)间距为10dp

android:horizontalSpacing="10dp",两列之间的边距。

接下来介绍 night_item.xml,这个XML跟前面ListView的ImageItem.xml很类似:

view plaincopy toclipboardprint?

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_height="wrap_content"

android:paddingBottom="4dip" android:layout_width="fill_parent">

android:layout_height="wrap_content"

android:id="@+id/ItemImage"

android:layout_width="wrap_content"

android:layout_centerHorizontal="true">

android:layout_width="wrap_content"

android:layout_below="@+id/ItemImage"

android:layout_height="wrap_content"

android:text="TextView01"

android:layout_centerHorizontal="true"

android:id="@+id/ItemText">

最后就是JAVA的源代码了,也跟前面的ListView的JAVA源代码很类似,不过多了“选中”的事件处理:

view plaincopy toclipboardprint?

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

GridView gridview = (GridView) findViewById(R.id.gridview);

//生成动态数组,并且转入数据

ArrayList> lstImageItem = new ArrayList>();

for(int i=0;i

{

HashMap map = new HashMap();

map.put("ItemImage", R.drawable.icon);// 添加图像资源的ID

map.put("ItemText", "NO."+String.valueOf(i));// 按序号做ItemText

lstImageItem.add(map);

}

//生成适配器的ImageItem  动态数组的元素,两者一一对 应

SimpleAdapter saImageItems = new SimpleAdapter(this, // 没什么解释

lstImageItem,// 数据来源

R.layout.night_item,//night_item 的XML实现

// 动态数组与ImageItem对应的子项

new String[] {"ItemImage","ItemText"},

//ImageItem 的XML文件里面的一个ImageView,两个TextView ID

new int[] {R.id.ItemImage,R.id.ItemText});

//添加并且显示

gridview.setAdapter(saImageItems);

//添加消息处理

gridview.setOnItemClickListener(new ItemClickListener());

}

//当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件

class  ItemClickListener implements OnItemClickListener

{

public void onItemClick(AdapterView arg0,//The AdapterView where the click happened

View arg1,//The view within the AdapterView that was clicked

int arg2,//The position of the view in the adapter

long arg3//The row id of the item that was clicked

) {

//在本例中arg2=arg3

HashMap item=(HashMap) arg0.getItemAtPosition(arg2);

//显示所选Item的ItemText

setTitle((String)item.get("ItemText"));

}

}


相关文章

  • 基于安卓系统的游戏开发与实现
  • XX大学 毕业设计(论文) 院 系: 信息工程学院 专 业: 计算机科学与技术 班 级: 学生姓名: XX 学 号: XXXXXXX 导师姓名: XXXX 职称: 讲师 起止时间: 2014 年 3月 1 日至 2014年 5月31日 XX ...查看


  • Android 高级面试题及答案
  • 阅读目录 一 性能优化 1.如何对 Android 应用进行性能分析 android 性能主要之响应速度 和UI刷新速度. 可以参考博客:Android系统性能调优工具介绍 首先从函数的耗时来说,有一个工具TraceView 这是andro ...查看


  • 基于安卓的安全卫士本科毕业设计论文
  • 摘 要 在移动互联网飞速发展的今天,智能手机成了人们沟通交流.了解外部信息的重要工具.从某种程度上说,智能手机相当于小型PC,其中有71.6%为Android手机用户.Android平台的的开源性使得市场上各种手机智能软件日益增多并且混乱, ...查看


  • 移动办公系统建设方案
  • 无锡市北塘区政府移动办公系统 建设方案 2014年11月 目 录 一. 项目概述 . ............................................................................. ...查看


  • MDM管理客户端常见问题排错手册-Android版
  • MDM管理客户端常见问题排错手册Android版: 一. MDM推广与功能介绍: 1. 什么是MDM? 移动智能终端安全管理系统(Mobile Device Security Management System,简称MDM)项目是一套可应用 ...查看


  • Android手机平台揭秘和未来发展趋势
  • 邸烁:Android手机平台揭秘和未来发展趋势[2008Linux开发者研讨会报道] 主持人:各位来宾下午好,首先请邸烁先生介绍Android的手机平台. 邸烁:Android是手机的软件平台,那么为什么要开发这样的软件平台呢.大家知道移动 ...查看


  • 员工签到管理系统
  • 软 件 学 院 三级实践课题 系统名称: 员工签到管理系统 专 业: 计算机信息管理 班 级: 信管111 学生姓名: 张世超(40) 2013 年 1 月 17 日 三级实践课题设计任务书 指导教师签字: 年 月 日 摘 要 本文设计的员 ...查看


  • 毕业论文--网上书店系统的设计与实现
  • *********软件技术学院 毕业设计(论文) 题 目: 系 别: 专 业: 学 号: 姓 名: 指导老师: 完成日期: 网上书店系统的设计与实现 软件技术 ACCP 2009 年 3 月 5 日 目 录 目 录 ............ ...查看


  • 毕业论文++网上书店系统的设计与实现 1
  • *********大学 毕业设计(论文) 题 目: 系 别: 专 业: 学 号: 姓 名: 指导老师: 完成日期: 网上书店系统的设计与实现 软件技术 ACCP 2009 年 3 月 5 日 目 录 目 录 ................ ...查看


热门内容