GridView(网格视图)是按照行和列的方式来显示内容的,一般用于显示图片等内容,比如实现九宫格图;

第一个例子:

实现代码为:

MainActivity.java

  1. package com.xiaozhang.gridview2;
  2.  
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.AdapterView;
  9. import android.widget.AdapterView.OnItemClickListener;
  10. import android.widget.BaseAdapter;
  11. import android.widget.GridView;
  12. import android.widget.ImageView;
  13. import android.widget.Toast;
  14.  
  15. public class MainActivity extends Activity {
  16. @Override
  17. public void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20.  
  21. GridView gridView = (GridView) findViewById(R.id.GridView1);
  22.  
  23. // 为GridView设置适配器
  24. gridView.setAdapter(new MyAdapter(this));
  25.  
  26. // 注册监听事件
  27. gridView.setOnItemClickListener(new OnItemClickListener() {
  28. public void onItemClick(AdapterView<?> parent, View v,
  29. int position, long id) {
  30. Toast.makeText(MainActivity.this, "pic" + (position + 1),
  31. Toast.LENGTH_SHORT).show();
  32. }
  33. });
  34. }
  35. }
  36.  
  37. // 自定义适配器
  38. class MyAdapter extends BaseAdapter {
  39. // 上下文对象
  40. private Context context;
  41. // 图片数组
  42. private Integer[] imgs = { R.drawable.pic2, R.drawable.pic1,
  43. R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, R.drawable.pic5,
  44. R.drawable.pic6, R.drawable.pic7, R.drawable.pic8, R.drawable.pic2,
  45. R.drawable.pic1, R.drawable.pic2 };
  46.  
  47. MyAdapter(Context context) {
  48. this.context = context;
  49. }
  50.  
  51. public int getCount() {
  52. return imgs.length;
  53. }
  54.  
  55. public Object getItem(int item) {
  56. return item;
  57. }
  58.  
  59. public long getItemId(int id) {
  60. return id;
  61. }
  62.  
  63. // 创建View方法
  64. public View getView(int position, View convertView, ViewGroup parent) {
  65. ImageView imageView;
  66. if (convertView == null) {
  67. imageView = new ImageView(context);
  68. imageView.setLayoutParams(new GridView.LayoutParams(128, 128)); // 设置ImageView对象布局
  69. imageView.setAdjustViewBounds(false); // 设置边界对齐
  70. imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); // 设置刻度的类型
  71. imageView.setPadding(4, 4, 4, 4); // 设置间距
  72. } else {
  73. imageView = (ImageView) convertView;
  74. }
  75. imageView.setImageResource(imgs[position]); // 为ImageView设置图片资源
  76. return imageView;
  77. }
  78. }

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6.  
  7. <TextView
  8. android:id="@+id/textView"
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content"
  11. android:background="#CC66FF"
  12. android:gravity="center"
  13. android:text="网格视图"
  14. android:textSize="30sp" />
  15.  
  16. <!--
  17. android:columnWidth:设置列的宽度
  18. android:horizontalSpacing:设置列与列之间的间距
  19. android:numColumns:设置列数
  20. android:stretchMode:缩放模式
  21. android:verticalSpacing:行与行之间的间距
  22. -->
  23.  
  24. <GridView
  25. android:id="@+id/GridView1"
  26. android:layout_width="wrap_content"
  27. android:layout_height="wrap_content"
  28. android:columnWidth="30dp"
  29. android:gravity="center"
  30. android:horizontalSpacing="10dp"
  31. android:numColumns="3"
  32. android:stretchMode="columnWidth"
  33. android:verticalSpacing="10dp" />
  34.  
  35. </LinearLayout>

第二个例子:

MainActivity.java

  1. package com.xiaozhang.gridview2;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import android.app.Activity;
  6. import android.content.Context;
  7. import android.os.Bundle;
  8. import android.view.LayoutInflater;
  9. import android.view.View;
  10. import android.view.ViewGroup;
  11. import android.widget.AdapterView;
  12. import android.widget.BaseAdapter;
  13. import android.widget.GridView;
  14. import android.widget.ImageView;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17. import android.widget.AdapterView.OnItemClickListener;
  18.  
  19. public class MainActivity extends Activity {
  20. private GridView gridView;
  21.  
  22. private String[] titles = new String[] { "图片1", "图片2", "图片3", "图片4", "图片5",
  23. "图片6", "图片7", "图片8", "图片9" };
  24. // 图片数组
  25. private int[] images = new int[] { R.drawable.pic1, R.drawable.pic2,
  26. R.drawable.pic3, R.drawable.pic4, R.drawable.pic5, R.drawable.pic6,
  27. R.drawable.pic7, R.drawable.pic8, R.drawable.pic8 };
  28.  
  29. @Override
  30. public void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. setContentView(R.layout.activity_main);
  33. gridView = (GridView) findViewById(R.id.gridview);
  34. PictureAdapter adapter = new PictureAdapter(titles, images, this);
  35. gridView.setAdapter(adapter);
  36.  
  37. gridView.setOnItemClickListener(new OnItemClickListener() {
  38. public void onItemClick(AdapterView<?> parent, View v,
  39. int position, long id) {
  40. Toast.makeText(MainActivity.this, "图片:" + (position + 1),
  41. Toast.LENGTH_SHORT).show();
  42. }
  43. });
  44. }
  45. }
  46.  
  47. // 自定义适配器
  48. class PictureAdapter extends BaseAdapter {
  49. private LayoutInflater inflater;
  50. private List<Picture> pictures;
  51.  
  52. public PictureAdapter(String[] titles, int[] images, Context context) {
  53. super();
  54. pictures = new ArrayList<Picture>();
  55. inflater = LayoutInflater.from(context);
  56. for (int i = 0; i < images.length; i++) {
  57. Picture picture = new Picture(titles[i], images[i]);
  58. pictures.add(picture);
  59. }
  60. }
  61.  
  62. @Override
  63. public int getCount() {
  64. if (null != pictures) {
  65. return pictures.size();
  66. } else {
  67. return 0;
  68. }
  69. }
  70.  
  71. @Override
  72. public Object getItem(int position) {
  73. return pictures.get(position);
  74. }
  75.  
  76. @Override
  77. public long getItemId(int position) {
  78. return position;
  79. }
  80.  
  81. @Override
  82. public View getView(int position, View convertView, ViewGroup parent) {
  83. ViewHolder viewHolder;
  84. if (convertView == null) {
  85. convertView = inflater.inflate(R.layout.picture, null);
  86. viewHolder = new ViewHolder();
  87. viewHolder.title = (TextView) convertView.findViewById(R.id.title);
  88. viewHolder.image = (ImageView) convertView.findViewById(R.id.image);
  89. convertView.setTag(viewHolder);
  90. } else {
  91. viewHolder = (ViewHolder) convertView.getTag();
  92. }
  93. viewHolder.title.setText(pictures.get(position).getTitle());
  94. viewHolder.image.setImageResource(pictures.get(position).getImageId());
  95. return convertView;
  96. }
  97.  
  98. }
  99.  
  100. class ViewHolder {
  101. public TextView title;
  102. public ImageView image;
  103. }
  104.  
  105. class Picture {
  106. private String title;
  107. private int imageId;
  108.  
  109. public Picture() {
  110. super();
  111. }
  112.  
  113. public Picture(String title, int imageId) {
  114. super();
  115. this.title = title;
  116. this.imageId = imageId;
  117. }
  118.  
  119. public String getTitle() {
  120. return title;
  121. }
  122.  
  123. public void setTitle(String title) {
  124. this.title = title;
  125. }
  126.  
  127. public int getImageId() {
  128. return imageId;
  129. }
  130.  
  131. public void setImageId(int imageId) {
  132. this.imageId = imageId;
  133. }
  134. }

GridView的布局文件:activity_main.xml

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

GridView里显示的内容:picture.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/root"
  4. android:layout_width="wrap_content"
  5. android:layout_height="wrap_content"
  6. android:layout_marginTop="5dp"
  7. android:orientation="vertical" >
  8.  
  9. <ImageView
  10. android:id="@+id/image"
  11. android:layout_width="120dp"
  12. android:layout_height="120dp"
  13. android:layout_gravity="center"
  14. android:padding="4dp"
  15. android:scaleType="fitXY" />
  16.  
  17. <TextView
  18. android:id="@+id/title"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:layout_gravity="center"
  22. android:gravity="center_horizontal" />
  23.  
  24. </LinearLayout>

Android GridView用法介绍的更多相关文章

  1. Android.mk 用法介绍

    一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个 ...

  2. android ListView用法介绍

    ListView在Android开发中是比较常用的组件,它是以列表的形式展示内容,并且还可以处理用户的选择与点击等操作: LIstView显示数据一般需要三方面: (1)ListView组件:用来展示 ...

  3. 怎么通过activity里面的一个按钮跳转到另一个fragment(android FragmentTransaction.replace的用法介绍)

    即:android FragmentTransaction.replace的用法介绍 Fragment的生命周期和它的宿主Activity密切相关,几乎和宿主Activity的生命周期一致,他们之间最 ...

  4. GitHub上排名前100的Android开源库介绍(来自github)

    本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍,至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果,然后过滤了 ...

  5. Android Debuggerd 简要介绍和源码分析(转载)

    转载: http://dylangao.com/2014/05/16/android-debuggerd-%E7%AE%80%E8%A6%81%E4%BB%8B%E7%BB%8D%E5%92%8C%E ...

  6. GitHub上排名前100的Android开源库介绍

    GitHub上排名前100的Android开源库介绍 文章来源: http://www.open-open.com/news/view/1587067#6734290-qzone-1-31660-bf ...

  7. 好压(HaoZip)的命令行模式用法介绍

    好压压缩软件,又叫“2345好压”,是一款国产的优秀压缩软件,目前是免费的,据官网介绍,该软件永久免费.官网地址:http://haozip.2345.com/ 本文主要对该软件的命令行模式用法进行介 ...

  8. sql事务(Transaction)用法介绍及回滚实例

    sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...

  9. Android sdk目录介绍

    android sdk目录介绍 build-tools 各版本SDK编译工具 docs 离线开发者文档Android SDK API参考文档 extras 扩展开发包,如兼容架包. platforms ...

随机推荐

  1. httpd与tomcat基于mod_jk整合

    搞定在前面述, httpd与tomcat整合方式 当前已知的有 ajp_proxy,mod_jk.so jk connecteor连接器下载地址 http://archive.apache.org/d ...

  2. 记一次pending请求问题查找过程

    情景再现 近期发现网站访问变慢,经常会出现请求无法响应的问题,一个请求长时间没有返回,导致页面出现504(Gateway Timeout),我们使用的nodejs+ngnix(反向代理). 猜测原因 ...

  3. Java设计模式之简单工厂、工厂方法和抽象工厂

    在前面的学习中(参见前面的博客),我们学到了很多OO原则: 封装变化 多用组合,少用继承 针对接口/超类编程,不针对实现编程 松耦合 开闭原则 让我们从一个简单的类开始,看看如何将之改造成符合OO原则 ...

  4. [置顶] 白话最小边覆盖总结--附加 hdu1151结题报告

    刚开始看到这个题目的时候就觉得想法很明了,就是不知道如何去匹配... 去网上看了不少人的解题报告,但是对于刚接触“最小边覆盖”的我来说....还是很困难滴....于是自己又开始一如以往学习“最大独立集 ...

  5. php防sql注入、xss

    php自带的几个防止sql注入的函数http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2013/0318/12234.html addslashe ...

  6. ansible 学习与实践

    title: ansible 学习与实践 date: 2016-05-06 16:17:28 tags: --- ansible 学习与实践 一 介绍 ansible是新出现的运维工具是基于Pytho ...

  7. jquery之onchange事件

    $(function(){ $("#opreateHtml").window("close"); $("#deliveryGrid").da ...

  8. c - 每位数字尾部加空格

    /* input:一个4位整数. output:每位整数后紧跟一个空格的字符串. */ char * insert(char *s) { int len = strlen(s); * len + ); ...

  9. Swift中对计算属性的理解和对之前的补充

    这个功能的重点作用应该是在计算上. 对于一般的属性,要么直接存一个,要么直接读一个,计算属性则可以根据所设置内容,进行一些修改或计算之类的, 比如: import UIKit class sample ...

  10. Qt小程序仿写----FileRead程序

    该程序实现如下功能:1.打开TXT文件A.txt:2.将文件路径显示到一个文本编辑框里面,文件内容显示到一个文本域里面:3.在文本域里面更改文件内容之后,保存文本域的内容到当前文件路径下. 定义了一F ...