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. java面试常考题

    基础知识: 1.C++或Java中的异常处理机制的简单原理和应用. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常.违反语义规则包括2种情况.一种是JAVA类库 ...

  2. CE_现金账户转账汇入汇出交易(案例)(未完成)

    2014-07-15 BaoXinjian 一.摘要 二.案例   通过 Oracle Payments 结算事务处理 通过付款模板 事物处理子类型 已验证 -> 正在结算中 ->

  3. Report_客制化报表输出Excel后去0问题(案例)

    2014-02-01 Created By BaoXinjian

  4. SPOJ Query on a tree 树链剖分 水题

    You are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, ...

  5. c++学习-运算符重载

    重载=号运算符,由于成员属性中有指针会出现错误 #include <iostream> using namespace std; class num{ public: num(){n=;c ...

  6. ylbtech-LanguageSamples-XMLdoc

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-XMLdoc 1.A,示例(Sample) 返回顶部 “XML 文档”示例 本示例演示如 ...

  7. gridview转成EXCEL文件保存(多页)

    CompositeLink complink = new CompositeLink(new PrintingSystem()); PrintableComponentLink link = new ...

  8. Good Sentences

    Wine in, truth out One is never too old to learn What is done can not be undone Time tries all thing ...

  9. RSpec自定义matcher

    链接 https://relishapp.com/rspec/rspec-expectations/v/3-4/docs/custom-matchers/define-a-custom-matcher ...

  10. zabbix入门到精通之Zabbix对linux主机的监控

    我们大概了解了怎么对台主机进行监控,主要步骤设计到添加主机,并且为主机添加监控项,这里主要为item,然后在item的基础上对item进行绘图并且通过screen的方式把不同的监控图像汇总到一张scr ...