Android入门之GridView(表格控件)

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

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

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


 1 public class EachIcon {
2
3 private int imageSrcId;
4 private String iconString;
5
6 public EachIcon(int imageSrcId,String iconString)
7 {
8 super();
9 this.imageSrcId = imageSrcId;
10 this.iconString = iconString;
11 }
12 public int getImageSrcId()
13 {
14 return imageSrcId;
15 }
16
17 public void setImageSrcId(int imageSrcId)
18 {
19 this.imageSrcId = imageSrcId;
20 }
21
22 public String getIconString ()
23 {
24 return iconString;
25 }
26
27 public void setIconString(String iconString)
28 {
29 this.iconString = iconString;
30 }
31 }

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


 1 import java.util.ArrayList;
2 import java.util.List;
3 import android.app.Activity;
4 import android.content.Context;
5 import android.util.Log;
6 import android.view.LayoutInflater;
7 import android.view.View;
8 import android.view.ViewGroup;
9 import android.widget.BaseAdapter;
10 import android.widget.ImageView;
11 import android.widget.TextView;
12
13 public class ImageAdapter extends BaseAdapter {
14 private List<EachIcon> eachIconList = new ArrayList();
15 private Context context;
16
17 public ImageAdapter(Context context)
18 {
19 super();
20 this.context = context;
21
22 EachIcon e1 = new EachIcon(R.drawable.a0,"图标1");
23 EachIcon e2 = new EachIcon(R.drawable.a1,"图标2");
24 EachIcon e3 = new EachIcon(R.drawable.a2,"图标3");
25 EachIcon e4 = new EachIcon(R.drawable.a3,"图标4");
26 EachIcon e5 = new EachIcon(R.drawable.a4,"图标5");
27 EachIcon e6 = new EachIcon(R.drawable.a5,"图标6");
28 EachIcon e7 = new EachIcon(R.drawable.a6,"图标7");
29 EachIcon e8 = new EachIcon(R.drawable.a7,"图标8");
30 EachIcon e9 = new EachIcon(R.drawable.a8,"图标9");
31 EachIcon e10 = new EachIcon(R.drawable.a9,"图标10");
32 EachIcon e11 = new EachIcon(R.drawable.a10,"图标11");
33 EachIcon e12 = new EachIcon(R.drawable.a11,"图标12");
34 EachIcon e13 = new EachIcon(R.drawable.a12,"图标13");
35 EachIcon e14 = new EachIcon(R.drawable.a13,"图标14");
36 EachIcon e15 = new EachIcon(R.drawable.a14,"图标15");
37 EachIcon e16 = new EachIcon(R.drawable.a15,"图标16");
38 EachIcon e17 = new EachIcon(R.drawable.a16,"图标17");
39
40 eachIconList.add(e1);
41 eachIconList.add(e2);
42 eachIconList.add(e3);
43 eachIconList.add(e4);
44 eachIconList.add(e5);
45 eachIconList.add(e6);
46 eachIconList.add(e7);
47 eachIconList.add(e8);
48 eachIconList.add(e9);
49 eachIconList.add(e10);
50 eachIconList.add(e11);
51 eachIconList.add(e12);
52 eachIconList.add(e13);
53 eachIconList.add(e14);
54 eachIconList.add(e15);
55 eachIconList.add(e16);
56 eachIconList.add(e17);
57 }
58
59 @Override
60 public int getCount() {
61 // TODO Auto-generated method stub
62 return eachIconList.size();
63 }
64
65 @Override
66 public Object getItem(int arg0) {
67 // TODO Auto-generated method stub
68 return null;
69 }
70
71 @Override
72 public long getItemId(int position) {
73 // TODO Auto-generated method stub
74 return 0;
75 }
76
77 @Override
78 public View getView(int position, View convertView, ViewGroup parent) {
79 // TODO Auto-generated method stub
80 Log.v("rub","---------------------------");
81
82 LayoutInflater inflater = ((Activity)context).getLayoutInflater();
83 View imgss = inflater.inflate(R.layout.image_text,null);
84
85 ImageView ivimgss = (ImageView)imgss.findViewById(R.id.imageview);
86 TextView tvimgss = (TextView)imgss.findViewById(R.id.textview);
87
88 ivimgss.setImageResource(eachIconList.get(position).getImageSrcId());
89 tvimgss.setText(eachIconList.get(position).getIconString());
90 return imgss;
91 }
92 }

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


 1 import android.app.Activity;
2 import android.os.Bundle;
3 import android.util.Log;
4 import android.view.View;
5 import android.widget.AdapterView;
6 import android.widget.AdapterView.OnItemClickListener;
7 import android.widget.GridView;
8 import android.widget.ListAdapter;
9 import android.widget.TextView;
10
11 public class MainActivity extends Activity {
12
13 @Override
14 protected void onCreate(Bundle savedInstanceState) {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.activity_main);
17
18 ListAdapter adapter = new ImageAdapter(this);
19 GridView gv = (GridView)this.findViewById(R.id.gridview);
20
21 gv.setAdapter(adapter);
22 gv.setOnItemClickListener(new OnItemClickListener() {
23 @Override
24 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
25 long arg3) {
26 // TODO Auto-generated method stub
27 Log.v("------------------单击的索引值:", ""+((TextView)arg1.findViewById(R.id.textview))
28 .getText().toString()+"索引是:"+arg2);
29 }
30 });
31 }
32 }

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


 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:paddingBottom="@dimen/activity_vertical_margin"
6 android:paddingLeft="@dimen/activity_horizontal_margin"
7 android:paddingRight="@dimen/activity_horizontal_margin"
8 android:paddingTop="@dimen/activity_vertical_margin"
9 tools:context=".MainActivity" >
10
11 <GridView
12 android:id="@+id/gridview"
13 android:layout_height="wrap_content"
14 android:layout_width="wrap_content"
15 android:numColumns="4"
16 android:horizontalSpacing="5px"
17 android:verticalSpacing="5px"
18 ></GridView>
19
20 </RelativeLayout>

写下来了以备自己忘记。

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

时间: 2024-10-26 00:22:42

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

Gridview表格控件

Gridview表格控件 效果图: 分析: 使用和ListvVew很像,都是经过适配器将数据绑定到控件上 具体步骤如下: 1.创建GridView控件,并指定列数 android:numColumns="3" 2.创建显示数据项的数据容器,是一个Lauout文件,里面一个ImageView,一个TextView 上面是ImageView,"小白10"是TextView显示的 3.创建好数据,这里用List来实现 private List<HashMap<

使用 Bolt 实现 GridView 表格控件

用 Bolt 实现了一个表格控件: 1. 提供 Insert,Remove,Get,Set 接口,可以为表格增删数据: 2. 通过  ItemClass, ItemSetDataFunc 属性来指定显示数据所用的 itemObj: 3. 不会每个 data 都创建 itemObj 来显示, 只为需要显示的数据创建 itemObj: 4. 提供 AttachItemEvent 接口,可以监听 itemObj 向外发出的事件; 5. 根据屏幕大小,列数可以自适应: 6. 根据屏幕大小,每一列的宽度可

最好的Angular2表格控件

最好的Angular2表格控件 现在市面上有大量的JavaScript数据表格控件,包括开源的第三方的和自产自销的.可以说Wijmo的Flexgrid是目前适应Angular 2的最好的表格控件. Angular 2数据表格基本要求: 更小.更快.更熟悉. 为了使用Angular 2表格,首先你需要了解表格的基本要求.FlexGrid开始于1996年,当时使用C++为Visual Basic编写的控件.多年来,它不断进化并在多个平台得到完善,尤其是JavaScript平台.FlexGrid 因为

【Android 初学】3、控件布局初步

什么是控件布局 所谓的控件布局方法,就是指控制控件在Activity当中的位置.大小.颜色以及其他控件样式属性的方法. 控件的布局,在android中,有两种方法: 1.使用布局文件完成控件布局(相对简单) 2.在Java代码中完成控件布局(动态布局.更灵活.也相对复杂) 布局方法分类 1.Linear Layout(最容易掌握) 线性布局:可以纵向布局.也可以横向布局. 2.Ralative Layout(最常用使用.熟悉WEB开发的人就很熟悉) 3.ListView 4.Grid View

javascript可编辑表格控件 支持全键盘操作

项目中经常会用到表格编辑控件,网上也有不少,但是确实没有完全符合我要求的, 自己写一个吧! 1.该控件支持 数据显示列,文本编辑列,选择列,下拉列,索引列,删除列 六种列类型 2.支持全键盘操作,自定义键位 包括:列焦点切换,行焦点切换,新建行,数据保存(默认 上,下,左,右 键操作) 3.丰富的事件,绝大多数的客户端操作都能触发无刷新后台事件 4.支持统计运算,可自定义运算插件 5.兼容 Ie,chorme,firefox等绝大多数主流浏览器 下载地址:http://files.cnblogs

能在多种前端框架下使用的表格控件

近几年Web前端框架特别流行,比如AngularJS.AngularJS 2.ReactJS.KnockoutJS.VueJS等.表格控件是我们在开发中经常要用到的控件.有没有能够在多种前端控件下都能使用的表格控件?最近研究发现Wijmo中的FlexGrid是一款不错的表格控件,它能支持很多主流的框架.这里主要介绍在纯JavaScript和AngularJS下FlexGrid的使用. 一.在纯JavaScript下使用FlexGrid HTML文件: <!DOCTYPE html> <h

ExtJS4.2学习(10)分组表格控件--GroupingGrid(转)

鸣谢网址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-17/179.html --------------------------------------------------------------------------------------------- 分组表格控件在我们的开发中经常被用到,GroupingGrid分组表格就是在普通表格的基础上,根据某一列的数据显示表格中的数据分组的表格控

【Android 初学】5、控件--ImageView的使用方法

Start Android 1.图片视图(ImageView)的基本概念 2.<InameView/>与ImageView 3.神奇的ScaleType属性 当图片大小与ImageView大小不匹配的时候,可以通过该属性来调整图片与ImageView控件的位置关系. android:scaleType:  android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType

Android在onCreate()中获得控件尺寸

@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        final ImageView imageView = (ImageView) findViewById(R.id.imageview);              int w = View.Mea