GridView是一个表格控件,可以在每个单元格中显示自定义的View或者字符串。在这里我们要实现一个图标下方有文字的效果。

1、首先我们应自定义布局文件image_text.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" > <ImageView
android:id="@+id/imageview"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/a0"
/>
<TextView
android:id="@+id/textview"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="textView"/>
</LinearLayout>

2、写一个实体类用来存放单元格里面每个视图的图片资源和文字:

 public class EachIcon {

     private int imageSrcId;
private String iconString; public EachIcon(int imageSrcId,String iconString)
{
super();
this.imageSrcId = imageSrcId;
this.iconString = iconString;
}
public int getImageSrcId()
{
return imageSrcId;
} public void setImageSrcId(int imageSrcId)
{
this.imageSrcId = imageSrcId;
} public String getIconString ()
{
return iconString;
} public void setIconString(String iconString)
{
this.iconString = iconString;
}
}

3、第三步我们还需要自定义一个适配器,名称为ImageAdapter,代码如下:

 import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView; public class ImageAdapter extends BaseAdapter {
private List<EachIcon> eachIconList = new ArrayList();
private Context context; public ImageAdapter(Context context)
{
super();
this.context = context; EachIcon e1 = new EachIcon(R.drawable.a0,"图标1");
EachIcon e2 = new EachIcon(R.drawable.a1,"图标2");
EachIcon e3 = new EachIcon(R.drawable.a2,"图标3");
EachIcon e4 = new EachIcon(R.drawable.a3,"图标4");
EachIcon e5 = new EachIcon(R.drawable.a4,"图标5");
EachIcon e6 = new EachIcon(R.drawable.a5,"图标6");
EachIcon e7 = new EachIcon(R.drawable.a6,"图标7");
EachIcon e8 = new EachIcon(R.drawable.a7,"图标8");
EachIcon e9 = new EachIcon(R.drawable.a8,"图标9");
EachIcon e10 = new EachIcon(R.drawable.a9,"图标10");
EachIcon e11 = new EachIcon(R.drawable.a10,"图标11");
EachIcon e12 = new EachIcon(R.drawable.a11,"图标12");
EachIcon e13 = new EachIcon(R.drawable.a12,"图标13");
EachIcon e14 = new EachIcon(R.drawable.a13,"图标14");
EachIcon e15 = new EachIcon(R.drawable.a14,"图标15");
EachIcon e16 = new EachIcon(R.drawable.a15,"图标16");
EachIcon e17 = new EachIcon(R.drawable.a16,"图标17"); eachIconList.add(e1);
eachIconList.add(e2);
eachIconList.add(e3);
eachIconList.add(e4);
eachIconList.add(e5);
eachIconList.add(e6);
eachIconList.add(e7);
eachIconList.add(e8);
eachIconList.add(e9);
eachIconList.add(e10);
eachIconList.add(e11);
eachIconList.add(e12);
eachIconList.add(e13);
eachIconList.add(e14);
eachIconList.add(e15);
eachIconList.add(e16);
eachIconList.add(e17);
} @Override
public int getCount() {
// TODO Auto-generated method stub
return eachIconList.size();
} @Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.v("rub","---------------------------"); LayoutInflater inflater = ((Activity)context).getLayoutInflater();
View imgss = inflater.inflate(R.layout.image_text,null); ImageView ivimgss = (ImageView)imgss.findViewById(R.id.imageview);
TextView tvimgss = (TextView)imgss.findViewById(R.id.textview); ivimgss.setImageResource(eachIconList.get(position).getImageSrcId());
tvimgss.setText(eachIconList.get(position).getIconString());
return imgss;
}
}

4、第四步在Activity里面绑定GridView:

 import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.TextView; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); ListAdapter adapter = new ImageAdapter(this);
GridView gv = (GridView)this.findViewById(R.id.gridview); gv.setAdapter(adapter);
gv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Log.v("------------------单击的索引值:", ""+((TextView)arg1.findViewById(R.id.textview))
.getText().toString()+"索引是:"+arg2);
}
});
}
}

这样一个自定义的视图加文字描述的GridView(表格控件)就完成了。对了,还有主布局文件:

 <RelativeLayout 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=".MainActivity" > <GridView
android:id="@+id/gridview"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:numColumns="4"
android:horizontalSpacing="5px"
android:verticalSpacing="5px"
></GridView> </RelativeLayout>

写下来了以备自己忘记。

下载地址:http://files.cnblogs.com/Jett/gridview.rar

Android入门之GridView(表格控件)的更多相关文章

  1. Gridview表格控件

    Gridview表格控件 效果图: 分析: 使用和ListvVew很像,都是经过适配器将数据绑定到控件上 具体步骤如下: 1.创建GridView控件,并指定列数 android:numColumns ...

  2. 使用 Bolt 实现 GridView 表格控件

    用 Bolt 实现了一个表格控件: 1. 提供 Insert,Remove,Get,Set 接口,可以为表格增删数据: 2. 通过  ItemClass, ItemSetDataFunc 属性来指定显 ...

  3. Android入门之时间日期控件

    效果图: MainActivity.java package com.jkxqj.helloandroid; import android.app.Activity; import android.o ...

  4. 深入浅出ExtJS 第三章 表格控件

    3.1 表格的特性简介 >.Ext中的表格功能:包括排序/缓存/拖动/隐藏某一列/自动显示行号/列汇总/单元格编辑等实用功能; >.表格由类Ext.grid.GridPanel定义,继承自 ...

  5. 动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据

    动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据:由存储过程决定,如果编写的存储过程可以生成需要呈现的表格则直接绑定,否则要动态生成表格

  6. Ext入门学习系列(五)表格控件(3)

    上节学习了Ext中如何绑定服务器端传递的数据.分别用asp.net和asp.net MVC.PHP.XML为例.本节主要介绍绑定之后的分页功能. 一.Ext的表格控件如何绑定? 分页是Ext自带的一个 ...

  7. Ext入门学习系列(五)表格控件(2)

    上节学习了Ext中表格控件,从创建,到定义数据源.绑定显示,大体明白了一个基本的表格控件是怎么实现的.而我们用表格控件多用于从各种数据源接收数据并显示出来,并不是写死的.本章我们就不同数据源的不同实现 ...

  8. Ext入门学习系列(五)表格控件(1)

    上节学习了Ext面板控件,为后面的各个控件学习奠定基础,在此基础上本章将学习网络开发最期待的功能——表格控件. 我们都知道网络编程语言中,除了.net其他的基本没有提供网格控件,而最近的asp.net ...

  9. [ PyQt入门教程 ] PyQt5中数据表格控件QTableWidget使用方法

    如果你想让你开发的PyQt5工具展示的数据显得整齐.美观.好看,显得符合你的气质,可以考虑使用QTableWidget控件.之前一直使用的是textBrowser文本框控件,数据展示还是不太美观.其中 ...

随机推荐

  1. Hadoop学习5--配置本地开发环境(Windows+Eclipse)

    一.导入hadoop插件到eclipse 插件名称:hadoop-eclipse-plugin-2.7.0.jar 我是从网上下载的,还可以自己编译. 放到eclipse安装目录下的plugins文件 ...

  2. sql语句(mysql)

    MySQL1.数据库数据类型 int 整型 double 浮点型 如double(5,2)最多5位,其中有两位小数 char:固定长度字符串,如char(255),数据长度不足会用空格补足 varch ...

  3. Ubuntu 16.04 LTS (Xenial Xerus)

    Canonical刚刚正式发布了Ubuntu 16.04 LTS (Xenial Xerus),这是一个长期支持版本,官方会提供长达5年的技术支持(包括常规更新/Bug修复/安全升级),一直到2021 ...

  4. ADF_Database Develop系列1_通过UML数据库开发之建Logical UML Class Model

    2013-05-01 Created By BaoXinjian

  5. Js读写cookie实例

    统计访问次数 <html> <head> <meta http-equiv="Content-Type" content="text/htm ...

  6. 版本控制、SVN、VSS

    ylbtech-Miscellaneos: 版本控制.SVN.VSS 1.A,版本控制返回顶部 1, 版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所 ...

  7. java异常处理机制throws

    throws可以在方法声明时抛出的异常.原则上throws声明的异常,一定要在该方法中抛出,否则没有意义. 相反的,若方法中我们主动通过throw抛出一个异常,应该在throws中声明该种类异常,通知 ...

  8. eclipse设置svn代理

    共2个步骤: 1. 找到C:\Documents and Settings\用户名\Application Data\Subversion的servers文件, 将#http-proxy-host和# ...

  9. Javascript同源策略对context.getImageData的影响

    在本机测试HTML5 Canvas程序的时候,如果用context.drawImage()后再用context.getImageData()获取图片像素数据的时候会抛出错:SECURITY_ERR: ...

  10. hibernate one-to-many many-to-one 双向注解

    建表语句: DROP TABLE IF EXISTS `t_company`; CREATE TABLE `t_company` ( `companyId` ) unsigned NOT NULL A ...