xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.gridviewdemo.MainActivity" > <!-- GridView是可滚动的网格,一般用来显示多张图片。
android:horizontalSpacing="10dp"两列之间的间距是10dp
android:numColumns="auto_fit"自动分配(安卓自提供),也可些一行显示几个
android:verticalSpacing="10dp" 两行之间的间距是10dp
android:stretchMode="spacingWidth"缩放与列宽大小同步
-->
<GridView
android:id="@+id/gridView_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_horizontal"
android:horizontalSpacing="10dp"
android:numColumns="3"
android:verticalSpacing="10dp" >
</GridView>
<!-- 运行效果中,各列之间的间距大于10dp,是因为将列数设为了3行,因此会平均分布 -->
</LinearLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:background="#000000">
<ImageView
android:id="@+id/image"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/address_book"
/> <TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:layout_marginTop="5dp"
android:text="名字"/> </LinearLayout>

源代码:

package com.example.gridviewdemo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast; /*
* GridView:以以网格形式显示页面
* 创建GridView的步骤:
* 1.准备数据源
* 2.新建适配器(SimpleAdapter)
* 3、GridView加载适配器
* 4.Gridview配置事件监听器(OnItemClickListener)
*/
public class MainActivity extends Activity implements OnItemClickListener {
private GridView gridView;
private SimpleAdapter adapter;
private List<Map<String, Object>> list;
private String[] iconNames; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.gridView_1);
list = new ArrayList<Map<String, Object>>();
adapter = new SimpleAdapter(this, getData(), R.layout.item,
new String[] { "图片", "文字" },
new int[] { R.id.image, R.id.text });
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(this);//设置监听器
} private List<Map<String, Object>> getData() {
iconNames = new String[] { "联系人", "日历", "照相机", "时钟", "游戏", "短信", "铃声", "设置",
"语音", "天气", "浏览器", "YouTube" };
int[] drawable = { R.drawable.address_book, R.drawable.calendar,
R.drawable.camera, R.drawable.clock, R.drawable.games_control,
R.drawable.messenger, R.drawable.ringtone, R.drawable.settings,
R.drawable.speech_balloon, R.drawable.weather,
R.drawable.world, R.drawable.youtube };
for (int i = 0; i < iconNames.length; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("图片", drawable[i]);
map.put("文字", iconNames[i]);
list.add(map);
} return list;
} @Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) { Toast.makeText(this,iconNames[position], Toast.LENGTH_SHORT).show();
Log.i("Toast", iconNames[position]);
}
}

Android_gridVIew的更多相关文章

  1. Android开发10.3:UI组件GridView网格视图

    GridView(网格视图) 概述 GridView用于在界面上按行.列分布的方式来显示多个组件         GridView和ListView有共同的父类 : AbsListView       ...

随机推荐

  1. C++ 文件操作(CFile类)

    原文:文件操作(CFile),C吉羊 一.Visual C++编程文件操作 有如下方法可进行操作: (1)使用标准C运行库函数,包括fopen.fclose.fseek等. (2)使用Win16下的文 ...

  2. ExpectationMaximum

    2- You may have question marks in your head, especially regarding where the probabilities in the Exp ...

  3. FZU 2105-Digits Count(线段树延时标记)

    题意: 每次操作区间每个数进行一种(&或|.或^ )给定的一个数,到sum时统计给定区间的和. 分析: 这个题让我觉得我的思维很不活跃,对懒惰标记理解,还远远不够,通过这道题我对懒惰标记加深了 ...

  4. HDU 5638 Toposort 线段树+贪心

    题意:bc round 74 分析: 参考下普通的用堆维护求字典序最小拓扑序, 用某种数据结构维护入度小于等于k的所有点, 每次找出编号最小的, 并相应的减少k即可. 这个数据结构可以用线段树, 建立 ...

  5. POJ3279 Fliptile 枚举+简单搜索

    题意:一个矩阵,每个点1或0,然后每次翻一个点,它周围上下左右(包括自己)1->0,0->1,问最少翻几次可以矩阵全是0,忽略题目说的字典序 分析:枚举第一行所有的情况,然后下面几行也随之 ...

  6. NBUT1457 Sona 莫队算法

    由于10^9很大,所以先离散化一下,把给你的这一段数哈希 时间复杂度O(nlogn) 然后就是分块莫队 已知[L,R],由于事先的离散化,可以在O(1)的的时间更新[l+1,r],[l,r+1],[l ...

  7. 在MFC框架中使用OpenGL的简单实例

    引言 我们知道,在MFC框架中,用于绘图的接口是GDI.但GDI只能绘制简单的2D图形,要想制作精美的3D图形,一个可行的办法是使用OpenGL或者Direct3D等第三方库. 由于最近在给导师的一个 ...

  8. python学习之optparse

    Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大 ...

  9. HDU 1890--Robotic Sort(Splay Tree)

    题意:每次找出第i大的数的位置p输出,然后将i~p之间的数反转. 题解:每次把要的区间转成一棵子树,然后更新.因为每次将第i小的数转到了了i,所以k次操作后,可知前k个数一定是最小的那k个数,所以以后 ...

  10. Android实例-使用电话拨号器在移动设备上(官方)(XE8+小米2)

    源文地址: http://docwiki.embarcadero.com/RADStudio/XE5/en/Mobile_Tutorial:_Using_the_Phone_Dialer_on_Mob ...