`

6.1.5 GridView详解

阅读更多
Android中的数据能够通过GridView类实现表格化展现,它也属于列表类型的控件,其继承关系如下:
java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.AdapterView<T extends android.widget.Adapter>
         ↳ android.widget.AbsListView
           ↳ android.widget.GridView
GridView控件应用案例效果如图6-10所示。
 


图6-10 GridView控件使用效果图
程序代码请参考代码清单6-8:
【代码清单6-8】 chapter6_4/src/com/work/GridView_1.java
public class GridView_1 extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.grid);

		GridView g = (GridView) findViewById(R.id.myGrid);
		g.setAdapter(new ImageAdapter(this));

		g.setOnItemSelectedListener(new OnItemSelectedListener() {
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				Toast.makeText(GridView_1.this, "图片ID:" + mThumbIds[position],
						Toast.LENGTH_SHORT).show();
			}

			public void onNothingSelected(AdapterView<?> parent) {
			}
		});
	}

	private Integer[] mThumbIds = { R.drawable.yellowimage,
			R.drawable.redimage, R.drawable.icon, R.drawable.blueimage,
			R.drawable.photo1962, R.drawable.photo189, R.drawable.photo1803,
			R.drawable.photo1796, R.drawable.photo1732, R.drawable.photo1553,
			R.drawable.photo1537, R.drawable.photo1503, R.drawable.photo1453,
			R.drawable.photo1450, R.drawable.photo1447, R.drawable.photo1441,
			R.drawable.photo1433, R.drawable.photo1432, R.drawable.photo1431,
			R.drawable.photo1426, R.drawable.photo1425, R.drawable.photo1424,
			R.drawable.photo1423, R.drawable.photo1422, R.drawable.photo142,
			R.drawable.photo140, R.drawable.photo1220, R.drawable.photo1208,
			R.drawable.photo1207, R.drawable.photo101209, };

	public class ImageAdapter extends BaseAdapter {
		private Context mContext;
		public ImageAdapter(Context c) {
			mContext = c;
		}

		public int getCount() {
			return mThumbIds.length;
		}

		public Object getItem(int position) {
			return position;
		}

		public long getItemId(int position) {
			return position;
		}

		public View getView(int position, View convertView, ViewGroup parent) {
			ImageView imageView;
			if (convertView == null) {
				imageView = new ImageView(mContext);
				imageView.setLayoutParams(new GridView.LayoutParams(60, 60));
				imageView.setPadding(8, 8, 8, 8);
			} else {
				imageView = (ImageView) convertView;
			}
			imageView.setImageResource(mThumbIds[position]);
			return imageView;
		}
	}
}

代码的关键是实现BaseAdapter适配器类——ImageAdapter,代码如下:
public View getView(int position, View convertView, ViewGroup parent) {
			ImageView imageView;
			if (convertView == null) {
				imageView = new ImageView(mContext);
				imageView.setLayoutParams(new GridView.LayoutParams(60, 60));
				imageView.setPadding(8, 8, 8, 8);
			} else {
				imageView = (ImageView) convertView;
			}
			imageView.setImageResource(mThumbIds[position]);
			return imageView;
		}

在convertView为null的时候实例化控件,imageView.setLayoutParams(new GridView.LayoutParams(60, 60)是设置一个单元格中图片大小是60×60像素。imageView.setPadding(8, 8, 8,设定GridView的单元格与其中的图片之间上、下、左、右空白。
布局文件chapter6_4/res/layout/grid.xml:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myGrid2"
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent"
    android:verticalSpacing="10dp"    
    android:horizontalSpacing="10dp"
    android:numColumns="auto_fit"
    android:columnWidth="60dp"
    android:gravity="center"
/> 

android:verticalSpacing="10dp"是两行之间的边距,android:horizontalSpacing="10dp"是两列之间的边距。android:numColumns="auto_fit"GridView列数设置为自动,android:columnWidth="60dp"是每列的宽度,也就是项目的宽度。android:gravity="center"是居中。
                                                   出自《Android开发案例驱动教程》第六章
  • 大小: 39.3 KB
分享到:
评论

相关推荐

    Spermatid 6.1.5.apk

    Spermatid 6.1.5.apk

    团队协作(工具包)软件【groupoffice6.1.5】协同办公软件

    团队协作(工具包)软件【groupoffice6.1.5】协同办公软件团队协作(工具包)软件【groupoffice6.1.5】协同办公软件团队协作(工具包)软件【groupoffice6.1.5】协同办公软件团队协作(工具包)软件【groupoffice...

    LOGO! Soft Comfort软件从v6.0升级至v6.1.5升级包.zip

    这个升级包从v6.0版本更新到v6.1.5版本,旨在提供新功能、性能优化以及可能存在的错误修复,以提高用户的编程体验和设备运行效率。 首先,我们来了解一下LOGO! Soft Comfort的主要功能。它主要用于设计、测试和诊断...

    qwt-6.1.5.zip

    Qwt 6.1.5 版本是该库的一个特定发布,它包含了对图表、仪表盘和其他可视化组件的支持。这个压缩包"qwt-6.1.5.zip"是为了帮助开发者在 Qt 5.9.3 平台上(在 Ubuntu 18.04.3 操作系统上)进行图表相关的开发工作。 ...

    lettuce-core-6.1.5.RELEASE-API文档-中文版.zip

    赠送jar包:lettuce-core-6.1.5.RELEASE.jar; 赠送原API文档:lettuce-core-6.1.5.RELEASE-javadoc.jar; 赠送源代码:lettuce-core-6.1.5.RELEASE-sources.jar; 赠送Maven依赖信息文件:lettuce-core-6.1.5....

    Raize Components 6.1.5 FOR D7

    《 Raize Components 6.1.5 for Delphi 7:构建高效用户界面的艺术与实践》 在软件开发领域,组件库是提升开发效率、优化用户体验的重要工具。Raize Components 6.1.5 正是一款专为 Delphi 7 设计的组件库,它以其...

    JIRA 6.1.5安装配置 汉化 详细描述

    本教程将详细介绍如何在您的系统上安装、配置JIRA 6.1.5版本,并进行汉化,以及如何与MySQL数据库建立连接。 **一、JIRA 6.1.5的安装** 1. **下载JIRA**:首先,你需要从Atlassian官方网站获取JIRA 6.1.5的安装包...

    LED走字屏控制软件,单双色及门楣全彩六代软件:LED Player6.0(版本V6.1.5)

    V6.1.5版本说明 (1).增加138、595、5958等多种译码选择; (2).增加多种RGB交换方式; (3).增加左右对开功能选项; (4).增加16、20、24、32多种数据选择; (5).增加ICN2038S、ICN2053、SM16188、MBI5153等多种芯片...

    P2PSearcher6.1.5云穿透版

    P2PSearcher6.1.5云穿透版

    黑群晖6.1.5引导文件

    黑群晖6.1.5引导文件,一个及其不错的文件,希望能帮助到大家!

    海蜘蛛ISPV6.1.5-part3(3/4)

    海蜘蛛ISPV6.1.5,目前破解版本中最稳定的! 软件版本: v6.1.5 内核版本: 2.6.18 破解步骤如下: 一、安装完毕进控制台 二、使用muddyboot登陆 密码(123456) 三、输入root回车 四、输入regtools回车 五、在web...

    liunx CentOS6.5安装jira6.1.5

    JIRA 是澳大利亚 Atlassian 公司开发的一款优秀的问题跟踪管理软件工具,可以对各种类型的问题进行跟踪管理,包括缺陷、任务、需求、改进等。JIRA采用J2EE技术,能够跨平台部署。它正被广泛的开源软件组织,以及...

    maven-jetty-plugin-6.1.5.jar

    maven-jetty-plugin-6.1.5.jar

    Hi-spider-ISPV6.1.5

    实测----EYOO ROUTER 海蜘蛛ISP 6.15破解版----OK可用 ====================具体破解方法==================== 一、安装完毕进控制台 ...三、输入root回车 四、输入regtools回车 五、在web控制台保存重起路由 ...

    jetty-util-6.1.5.jar

    "jetty-util-6.1.5.jar"是Jetty项目的一个工具包,包含了用于Jetty服务器运行时所需的各种实用工具和类。 这个特定版本的Jetty Util库(6.1.5)提供了以下关键功能和知识点: 1. **线程池管理**:Jetty利用其内置...

    海蜘蛛ISPV6.1.5-part4(4/4)

    海蜘蛛ISPV6.1.5,目前破解版本中最稳定的! 软件版本: v6.1.5 内核版本: 2.6.18 破解步骤如下: 一、安装完毕进控制台 二、使用muddyboot登陆 密码(123456) 三、输入root回车 四、输入regtools回车 五、在web...

    Raize Components 6.1.5 For(Delphi2009~DelphiXE5)

    Raize Components 6.1.5 带源码, 支持 Delphi2009/Delphi2010/DelphiXE/DelphiXE2/DelphiXE3/DelphiXE4/DelphiXE5

    Raize Components v6.1.5 + serial part1

    支持delphi xe5 Raize Components is a user interface design system for Delphi and C++Builder. At its center is a collection of more than 125 general-purpose native VCL controls. Built on a foundation ...

    单双色及门楣全彩六代软件:LED Player6.0(版本V6.1.5)

    LED Player 6.0(版本V6.1.5)是用于控制单双色LED屏幕和门楣全彩LED屏幕的软件。以下是关于该软件的一些常见特点和功能: 1.LED屏幕控制: LED Player 6.0 允许用户控制单双色LED屏幕和门楣全彩LED屏幕,包括对...

    dbeaver-ce-6.1.5-macos.dmg(MacOs)

    MacOS 的多数据库管理工具Dbeaver社区版,供下载慢的同学使用

Global site tag (gtag.js) - Google Analytics