1. java 代码例如以下(简单的知识点我会以凝视的形式解说):
  1. package com.gc.gridviewdemo;
  2. /**
  3. * @author Android将军
  4. */
  5. /**
  6. * 知识点解说:
  7. * 1、GridView 用于在界面上按行、列分布的方式来显示多个组件。
  8. * GridView和ListView有共同的父类:AbsListView,因此GridView
  9. * 和ListView具有非常高的类似性,它们都是列表项。
  10. * GridView与ListView的唯一差别在于:ListView仅仅显示一列。而GridView
  11. * 能够显示多列。从这个角度来看,ListView相当于一种特殊的GridView,
  12. * 假设让GridView仅仅显示一列。那么该GridView就变成了Listview。
  13. * 与ListView类似的是,GridView也须要通过Adapter来提供显示的数据
  14. * 2、GridView经常使用的XML属性:
  15. * android:columnWidth------设置列的宽度
  16. * android:numColumns-------设置列数
  17. * android:horizontalSpacing----设置各元素之间的水平间距
  18. * android:verticalSpacing----设置各元素之间的垂直间距
  19. */
  20. import java.util.ArrayList;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.Map;
  24.  
  25. import android.os.Bundle;
  26. import android.app.Activity;
  27. import android.view.Menu;
  28. import android.view.View;
  29. import android.widget.AdapterView;
  30. import android.widget.AdapterView.OnItemClickListener;
  31. import android.widget.AdapterView.OnItemSelectedListener;
  32. import android.widget.GridView;
  33. import android.widget.ImageView;
  34. import android.widget.SimpleAdapter;
  35.  
  36. public class MainActivity extends Activity {
  37. private GridView grid;
  38. private ImageView imageView;
  39. int[] imageIds=new int[]{R.drawable.addresslist1,R.drawable.conference2,R.drawable.daiban3
  40. ,R.drawable.email4,R.drawable.file5,R.drawable.infrom6,R.drawable.organization7,R.drawable.publicfile8
  41. ,R.drawable.request9,R.drawable.sign10,R.drawable.task11,R.drawable.work12};
  42. @Override
  43. protected void onCreate(Bundle savedInstanceState) {
  44. super.onCreate(savedInstanceState);
  45. setContentView(R.layout.activity_main);
  46. //创建一个List对象,List对象的元素是Map
  47. List<Map<String,Object>> listItems=new ArrayList<Map<String,Object>>();
  48. for(int i=0;i<imageIds.length;i++)
  49. {
  50. Map<String, Object> listItem=new HashMap<String,Object>();
  51. listItem.put("image", imageIds[i]);
  52. listItems.add(listItem);
  53. }
  54. //获取显示图片的ImageView
  55. imageView=(ImageView)findViewById(R.id.imageView);
  56. //创建一个SimpleAdapter
  57. SimpleAdapter simpleAdapter=new SimpleAdapter(this, listItems, R.layout.cell, new String[]{"image"}, new int[]{R.id.image1});
  58.  
  59. grid=(GridView)findViewById(R.id.grid01);
  60. //为GridView设置Adapter
  61. grid.setAdapter(simpleAdapter);
  62. //加入列表项被选中的监听器
  63. grid.setOnItemSelectedListener(new OnItemSelectedListener() {
  64.  
  65. @Override
  66. public void onItemSelected(AdapterView<?
  67.  
  68. > parent, View view,
  69. int position, long id) {
  70. // TODO Auto-generated method stub
  71. //显示当前被选中的图片
  72. imageView.setImageResource(imageIds[position]);
  73. }
  74.  
  75. @Override
  76. public void onNothingSelected(AdapterView<?
  77.  
  78. > parent) {
  79. // TODO Auto-generated method stub
  80.  
  81. }
  82. });
  83. //加入列表项被单击的监听器
  84. grid.setOnItemClickListener(new OnItemClickListener() {
  85.  
  86. @Override
  87. public void onItemClick(AdapterView<?
  88.  
  89. > parent, View view,
  90. int position, long id) {
  91. // TODO Auto-generated method stub
  92. //显示被单击的图片
  93. imageView.setImageResource(imageIds[position]);
  94. }
  95. });
  96.  
  97. }
  98.  
  99. }

xml布局文件的代码例如以下:

  1. activity_main.xml
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. android:layout_gravity="center_horizontal"
  7. >
  8.  
  9. <!-- 定义一个GridView组件 -->
  10. <GridView
  11. android:id="@+id/grid01"
  12. android:layout_width="fill_parent"
  13. android:layout_height="wrap_content"
  14. android:horizontalSpacing="1pt"
  15. android:verticalSpacing="1pt"
  16. android:numColumns="4"
  17. android:gravity="center"
  18. />
  19. <ImageView
  20. android:id="@+id/imageView"
  21. android:layout_width="240dp"
  22. android:layout_height="240dp"
  23. android:layout_gravity="center_horizontal"
  24. />
  25.  
  26. </LinearLayout>

cell.xml的代码例如以下:

  1. <?xml version="1.0" encoding="utf-8"?
  2.  
  3. >
  4. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical" >
  8. <ImageView
  9. android:id="@+id/image1"
  10. android:layout_width="60dp"
  11. android:layout_height="60dp"
  12. />
  13.  
  14. </LinearLayout>

执行效果截图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW5kcm9pZF9qaWFuZ2p1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/25342001

AndroidUI的组成部分GridView的更多相关文章

  1. AndroidUI的组成部分ProgressBar

    package com.gc.progressbar; /* * 1.ProgressBar组件也是一组重要的组件,ProgressBar本身代表了进度条组件, * 它还派生了两个经常使用的组件:Se ...

  2. AndroidUI的组成部分RoomButton

    <!-- 知识点汇总: 1.Button与ImageButton的差别在于,Button生成的button上显示文字 而ImageButton上则显示图片.须要指出的是:为ImageButton ...

  3. Android--UI之GridView

    前言 这篇博客介绍一下Android平台下,GridView控件的开发.针对GridView控件的一些常用属性.方法,以及注意事项进行讲解,最后将以一个Demo展示GridView控件的使用. Gri ...

  4. Android 高逼格纯代码实现类似微信钱包带分割线的GridView

    前言    原文地址:http://blog.csdn.net/sk719887916/article/details/40348837: Tamic 通过上两篇关于自定view的文章,在自定义vie ...

  5. AndroidUI组件之ImageSwitcher

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gc_gongchao/article/details/25594669 今天继续AndroidUI组 ...

  6. Android GridView 通过seletor 设置状态和默认状态

    Android中可以通过selector控制GridView Item 的状态,而省去使用代码控制 GridView View Selector Xml文件 <?xml version=&quo ...

  7. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  8. 在DevExpress程序中使用GridView直接录入数据的时候,增加列表选择的功能

    在我上篇随笔<在DevExpress程序中使用Winform分页控件直接录入数据并保存>中介绍了在GridView以及在其封装的分页控件上做数据的直接录入的处理,介绍情况下数据的保存和校验 ...

  9. Android listview和gridview以及view的区别

    GridView 可以指定显示的条目的列数. listview一般显示的条目的列数都是一列 如果是列表(单列多行形式)的使用ListView,如果是多行多列网状形式的优先使用GridView andr ...

随机推荐

  1. Microsoft2013校园招聘笔试题及解答

    继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently store the book orders ...

  2. Delphi接口的底层实现(接口在内存中仍然有其布局,它依附在对象的内存空间中,有汇编解释)——接口的内存结构图,简单清楚,深刻 good

    引言 接口是面向对象程序语言中一个很重要的元素,它被描述为一组服务的集合,对于客户端来说,我们关心的只是提供的服务,而不必关心服务是如何实现的:对于服务端的类来说,如果它想实现某种服务,实现与该服务相 ...

  3. ThinkPhp学习06

    原文:ThinkPhp学习06 一.简单学习修改用户信息模块 1.编写UserAction.class.php <?php class UserAction extends Action{ pu ...

  4. SilkTest Q&A 2

    Q11:SilkTest中有没有计算web页面上单词数量的函数? A11:你可以使用Clipboard函数.使用Ctrl+a和Ctrl+c,然后解析string的list. Q12:silktest的 ...

  5. 设置Mysql的连接超时参数

     在Mysql的默认设置中,如果一个数据库连接超过8小时没有使用(闲置8小时,即   28800s),mysql server将主动断开这条连接,后续在该连接上进行的查询操作都将失败,将   出现:e ...

  6. WM_NCHITTEST有21种取值,常用的有HTCAPTION,HTCLIENT,HTBORDER,HTSYSMENU,HTTRANSPARENT,罗列所有VCL里对其使用的情况

    我为了移动一个无标题栏的窗体,使用了WM_NCHITTEST消息,这个消息大概如下: 通常,我们拖动对话框窗口的标题栏来移动窗口,但有时候,我们想通过鼠标在客户区上拖动来移动窗口. 一个容易想到的方案 ...

  7. [Cocos2d-x]解决Android平台ndk-build时不自动删除外部库

    参考链接: http://blog.chinaunix.net/uid-26009923-id-3430612.html http://hi.baidu.com/hpyfei/item/52a2b21 ...

  8. 2013 吉林通化邀请赛 Tutor 有点坑的水题

    计算12个数的和的平均数.四舍五入,不能有后导0. 我的做法是,将答案算出后,乘以1000,然后看个位是否大于等于5,判断是否要进位…… #include<iostream> #inclu ...

  9. Java 泛型具体解释

    在Java SE1.5中.添加了一个新的特性:泛型(日本语中的总称型).何谓泛型呢?通俗的说.就是泛泛的指定对象所操作的类型.而不像常规方式一样使用某种固定的类型去指定. 泛型的本质就是将所操作的数据 ...

  10. POJ 1122 FDNY to the Rescue!

    给出某些交叉点的距离,-1 表示无法到达. 然后给出火灾发生点  和 附近的消防局位置. 排列消防局 的 时间 与路径. 反向建图,以火灾出发点为起点做一次SPFA. #include<cstd ...