Android控件之GridView探究

GridView是一项显示二维的viewgroup,可滚动的网格。一般用来显示多张图片。

以下模拟九宫图的实现,当鼠标点击图片时会进行相应的跳转链接。

目录结构

 

main.xml布局文件,存放GridView控件

复制代码
<?xml version="1.0" encoding="utf-8"?>
<!--
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",两列之间的边距
-->
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
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"
/>
复制代码

night_item.xml布局文件,存放显示控件

复制代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android
="http://schemas.android.com/apk/res/android"
android:layout_height
="wrap_content"
android:paddingBottom
="4dip"
android:layout_width
="fill_parent">
<ImageView android:layout_height="wrap_content"
android:layout_width
="wrap_content"
android:layout_centerHorizontal
="true"
android:id
="@+id/itemImage">
</ImageView>
<TextView 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">
</TextView>
</RelativeLayout>
复制代码

strings.xml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, GvActivity!</string>
<string name="app_name">九宫图</string>
<string name="test_name1">跳转到TestActivity1</string>
<string name="test_name2">跳转到TestActivity2</string>
<string name="test_name3">跳转到TestActivity3</string>
</resources>
复制代码

清单文件

复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ljq.gv"
android:versionCode
="1"
android:versionName
="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".GvActivity"
android:label
="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".TestActivity1" android:label="@string/test_name1"/>
<activity android:name=".TestActivity2" android:label="@string/test_name2"/>
<activity android:name=".TestActivity3" android:label="@string/test_name3"/>
</application>
<uses-sdk android:minSdkVersion="7"/>

</manifest>
复制代码

跳转类TestActivity1、TestActivity2、TestActivity3

复制代码
package com.ljq.gv;

import android.app.Activity;
import android.os.Bundle;

publicclass TestActivity1 extends Activity {

@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
}
}

package com.ljq.gv;

import android.app.Activity;
import android.os.Bundle;

publicclass TestActivity2 extends Activity {

@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
}
}

package com.ljq.gv;

import android.app.Activity;
import android.os.Bundle;

publicclass TestActivity3 extends Activity {

@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
}
}
复制代码

类GvActivity

复制代码
package com.ljq.gv;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

publicclass GvActivity extends Activity {
private String texts[] =null;
privateint images[] =null;

publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

images
=newint[]{R.drawable.p1, R.drawable.p2,
R.drawable.p3, R.drawable.p4,
R.drawable.p5,R.drawable.p6,
R.drawable.p7,R.drawable.p8};
texts
=new String[]{ "宫式布局1", "宫式布局2",
"宫式布局3", "宫式布局4",
"宫式布局5", "宫式布局6",
"宫式布局7", "宫式布局8"};

GridView gridview
= (GridView) findViewById(R.id.gridview);
ArrayList
<HashMap<String, Object>> lstImageItem =new ArrayList<HashMap<String, Object>>();
for (int i =0; i <8; i++) {
HashMap
<String, Object> map =new HashMap<String, Object>();
map.put(
"itemImage", images[i]);
map.put(
"itemText", texts[i]);
lstImageItem.add(map);
}

SimpleAdapter saImageItems
=new SimpleAdapter(this,
lstImageItem,
// 数据源
R.layout.night_item,// 显示布局
new String[] { "itemImage", "itemText" },
newint[] { R.id.itemImage, R.id.itemText });
gridview.setAdapter(saImageItems);
gridview.setOnItemClickListener(
new ItemClickListener());
}

class ItemClickListener implements OnItemClickListener {
/**
* 点击项时触发事件
*
*
@param parent 发生点击动作的AdapterView
*
@param view 在AdapterView中被点击的视图(它是由adapter提供的一个视图)。
*
@param position 视图在adapter中的位置。
*
@param rowid 被点击元素的行id。
*/
publicvoid onItemClick(AdapterView<?> parent, View view, int position, long rowid) {
HashMap
<String, Object> item = (HashMap<String, Object>) parent.getItemAtPosition(position);
//获取数据源的属性值
String itemText=(String)item.get("itemText");
Object object
=item.get("itemImage");
Toast.makeText(GvActivity.
this, itemText, Toast.LENGTH_LONG).show();

//根据图片进行相应的跳转
switch (images[position]) {
case R.drawable.p1:
startActivity(
new Intent(GvActivity.this, TestActivity1.class));//启动另一个Activity
finish();//结束此Activity,可回收
break;
case R.drawable.p2:
startActivity(
new Intent(GvActivity.this, TestActivity2.class));
finish();
break;
case R.drawable.p3:
startActivity(
new Intent(GvActivity.this, TestActivity3.class));
finish();
break;
}

}
}
}
复制代码

运行结果

转载于:https://www.cnblogs.com/shanmao/p/3526561.html

Android中如何使用GridView 首先在主XML中放入Grid View控件 取好id private GridView gv1; private int[] icon = {R.drawable.cat, R.drawable.cow, R.drawable.dog, R.drawable.hamster}; private String[] iconName = {"英雄介绍", "技能", "天赋推荐"... 阅读详情

相关推荐

安卓子控件抢占父控件点击事件或者焦点问题

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者C

Tamic (大白) 1万+

android 中的 gridview 的用法

两个布局文件 actity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-aut...

wujing1_1的博客 19万+

全面掌握Android GridView控件的使用方法

Android为不同的场景提供了多种类型的Adapter,如BaseAdapter、CursorAdapter和ArrayAdapter等,每种Adapter都有其特定的应用场景。:这是一个通用的Adapter,适用于几乎所有的列表视图,包括GridView、ListView等。它是最灵活也是最复杂的Adapter,需要开发者手动实现所有的方法。:用于与SQLite数据库的Cursor进行交互。当数据直接来源于数据库时,使用CursorAdapter可以非常高效地将数据展示到列表视图中。

weixin_42573757的博客 1255

Android的GridView控件

GridView控件是可以用来显示二维排列的控件,这里在上一篇TabHost控件的基础上添加了一个GridView控件,用作Tab页的显示内容。 效果图: 帖代码: public class OrderClientActivity extends Activity { TabHost tabHost; String[] dishType=new String[]{"1","2",

lhp1331的专栏 6547

Device Mapper 代码分析

Device Mapper(DM)是Linux 2.6全面引入的块设备新构架,通过DM可以灵活地管理系统中所有的真实或虚拟的块设备。DM以块设备的形式注册到Linux内核中,凡是挂载(或者说“映射”)于DM结构下的块设备,不管他们是如何组织,如何通讯,在Linux看来都是一个完整的DM块设备。因此DM让不同组织形式的块设备或者块设备集群在Linux内核面前有一个完整统一的DM表示。一、DM

SonicLing的专栏 1万+

事件相机(Event Camera)及相关研究简介——新一代相机?新的计算机视觉领域?

事件相机(Event Camera)及相关研究简介 事件相机是一个新型的类脑相机,是一个待开发的大领域。希望通过我的分享,能够有更多人来研究并将它更好地运用在我们的生活中~

Cyril的博客 5万+

Android:控件GridView的使用

如果是列表(单列多行形式)的使用ListView,如果是多行多列网状形式的优先使用GridView。 <?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="m...

达帮主 6万+

【视线追踪】视线追踪的性能评估框架 及 基础知识

文章目录一、 前言二、 眼球追踪基础1. 眼动类型研究2. 基本设备3. 校准 calibration4. 眼球视线和头部姿态的关系5. 视线追踪精确度的评估三、 视线估计算法1. 基于2维回归2. 基于3D模型1) 单摄像头2) 多摄像头3. 基于交叉比4. 基于外观5. 基于眼睛形状的方法四、 实现估计的应用1. 电脑2. 电视3. 头戴设备4. 汽车5. 手持设备6. 设备配置五、 视线追踪的性能指标和错误原因1. 不同平台之间差异性很大2. 影响视线追踪可用性的因素六、 视线追踪系统的性能评估框架1

火火的博客 5318

安卓gridview控件的使用

但是由于后期配合项目整体UI的要求,框架不适合,那么又如何有放大选中的效果呢,我的思路是设置Item放大后的背景,先隐藏当选中的时候对View进行放大正好是背景的大小,这就需要我们自己计算Item的宽高了,给个我实现的案例。有的时候我们需要分页加载数据怎么办,我的思路是判断当前选中的Item的位置是否在最底下,如果是就进行网络请求,在页面的OnkeyDown事件中监听,其实将逻辑封装在自定义Gridview中然后暴露回调接口出来。

m0_72495985的博客 1246

MiFlash Prime免授权刷机实战:解锁小米9008 EDL救砖新方案

MiFlash Prime作为免授权刷机工具,有效解决了小米设备在9008 EDL模式下因账号验证无法救砖的难题。本文详细介绍了从驱动安装、进入EDL模式到固件刷写的完整流程,帮助用户安全快速地恢复变砖设备,是维修人员和极客的实用解决方案。

5f4d3s2a1q的博客 2898

锐捷交换机配置SSH

锐捷交换机配置ssh 一、组网需求 通过ssh功能可以远程登录管理设备 二、配置步骤 全局开启ssh服务,并且指定ssh版本 Ruijie>enable Ruijie#configure terminal Ruijie(config)#enable service ssh-server ------>开启SSH服务,默认关闭 Ruijie(config)#ip ssh version 2 ------>默认1.99版本,设置为版本2 添加登

Loners_fan的博客 1万+

Android常用控件之GridView使用BaseAdapter

我们可以为GridView添加自定义的Adapter,首先看下用自定义Adapter的显示效果 在布局文件main.xml文件中定义一个GridView控件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.androi

DMT专栏 2万+

视觉Transformer实战 | Token-to-Token Vision Transformer(T2T-ViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准的 ViT 存在一些局限性,如需要大规模预训练数据、对局部结构建模不足等。Token-to-Token ViT (T2T-ViT) 通过引入渐进式分词过程改进了原始 ViT,使其能够在中小型数据集上取得更好的性能。本节将详细介绍 T2T-ViT 的技术原理,并使用 PyTorch 从零开始实现 T2T-ViT。

盼小辉丶的博客 4万+

【Android从零单排系列二十二】《Android视图控件——GridView》

小伙伴们,在上文中我们介绍了Android视图组件ExpandableListView,本文我们继续盘点,介绍一下视图控件的GridView。GridView是一个在Android中常用的布局控件,它可以以网格形式展示数据,类似于表格或者矩阵。GridView可以按照指定的行数和列数将数据显示在多个单元格中,使得数据呈现出规律的排列方式。GridView通过Adapter来提供数据,并且可以自定义每个单元格的布局。用户可以自定义Adapter来适配各种数据源,并为每个单元格设置不同的视图样式和内容。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 4044

IIC软件协议及硬件知识汇总

IIC软件协议及硬件相关知识,真的是非常齐全了!

记得诚 1万+

深度强化学习训练结果曲线绘制教程

使用python语言,只调用matplotlib库,绘制训练过程中保存的强化学习训练曲线。模仿经典论文中的训练曲线,多次训练取平均,并绘制出阴影区域。

加斯顿工程师的博客 911

Android 控件之GridView

http://www.cnblogs.com/salam/archive/2010/10/06/1844596.html  GridView是Android中的数据显示控件,先体验一下它的效果 这是GridView只呈现图片的效果。源码下载 下面详细介绍一下Grid

pgalxx的专栏 1642

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android 控件之GridView图片表格控件

Android 控件之GridView图片表格控件 1.首先创建工程,在主布局文件中添加一个GridView控件。 2.找足够的图片放在资源文件下。 3.在主Activity中进行相应的操作。代码如下: package com.example.android_gridview; import android.app.Activity; import android.os.Bundle

不二 1206

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android控件之GridView

网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字、图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现。 看到目前为止就是用适配器进行规定布局方式,并把每个布局文件(imageview 和 textview)显示出来。 布局文件xml: <RelativeLayout xmlns:android="http://schemas.andr

小磊's blog 655

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 使用Intent调用内置应用程序
下一篇: 初试百度地图API
dgitra7963
博客等级 码龄10年 10粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值