Android的UI组件之GridView

原创 2012年08月23日 18:30:17

最近打算做一个系统,在进入登陆界面后,显示这个系统的功能,通过学习李刚老师的疯狂android讲义,打算用网格式图GridView,下面是GridView的练习。

先上图:


下面是两个xml代码:

Activity界面代码:

<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:orientation="vertical"
     >
<GridView 
    android:id="@+id/grid01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:horizontalSpacing="pt"
    android:verticalSpacing="2pt"
    android:numColumns="4"
    android:gravity="center" 
    >
</GridView>
<ImageSwitcher 
    android:id="@+id/switcher"
    android:layout_width="320dp"
    android:layout_height="320dp"
    android:layout_gravity="center_horizontal"
    >
</ImageSwitcher>
</LinearLayout>
为适配器simpleAdapter编写的界面布局cell.xml:

<?xml version="1.0"	encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:gravity="center_horizontal"
    android:padding="5pt"
    >
<ImageView 
    android:id="@+id/image1"
    android:layout_width="50dp"
    android:layout_height="50dp"
    />
<TextView 
    android:id="@+id/text1"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:gravity="center_horizontal"
    />
</LinearLayout>
 GridViewTest.java代码:

package com.example.gridviewtest;

import java.util.ArrayList;

public class GridViewTest extends Activity {

    private static final String TAG="==CrazyIt.org";
    String[] names={"查询","修改","注册","消息","工资","功能1","功能2","功能3","功能4","功能5","功能6","功能7",};
    int[] imageIds=new int[]{
    		R.drawable.bomb5,R.drawable.bomb6,R.drawable.bomb7,
    		R.drawable.bomb8,R.drawable.bomb9, R.drawable.bomb10
    		, R.drawable.bomb11 , R.drawable.bomb12	, R.drawable.bomb13
    		, R.drawable.bomb14 , R.drawable.bomb15 , R.drawable.bomb16 
    };
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grid_view_test);
      //创建一个List集合,List集合的元素是Map
    	List<Map<String, Object>> listItems=new ArrayList<Map<String,Object>>();
    	for(int i=0;i<imageIds.length;i++){
    		Map<String, Object> listItem1=new HashMap<String, Object>();
    		listItem1.put("image", imageIds[i]);
    		listItem1.put("name", names[i]);
    		listItems.add(listItem1);
    		
    	}
    	//获取显示图片的ImageSwitcher
    	final ImageSwitcher switcher=(ImageSwitcher)findViewById(R.id.switcher);
    	//设置图片更换的动画效果
    	switcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
    	switcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
    	//为ImageSwitcher设置图片切换的动画效果
    	switcher.setFactory(new ViewFactory() {
			
			public View makeView() {
				// TODO Auto-generated method stub
				ImageView imageView =new ImageView(GridViewTest.this);
				imageView.setBackgroundColor(0xff0000);
				imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
				imageView.setLayoutParams(new ImageSwitcher.LayoutParams(
						LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
				return imageView;
			}
		});
    	//创建一个SimpleAdapter
    	SimpleAdapter simpleAdapter=new SimpleAdapter(this, listItems, R.layout.cell, new String[]{"image","name"}, new int []{R.id.image1,R.id.text1});
    	GridView gridView=(GridView)findViewById(R.id.grid01);
    	//为GridView设置Adapter
    	gridView.setAdapter(simpleAdapter);
    	//添加列表项被选中的监听器
    	gridView.setOnItemSelectedListener(new OnItemSelectedListener() {

			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				// 显示被选中的图片
				
				switcher.setImageResource(imageIds[arg2%imageIds.length]);
			}

			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
		});
    	//添加列表项被单击的监听器
    	gridView.setOnItemClickListener(new OnItemClickListener() {

			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				// 显示被单击的图片
				switcher.setImageResource(imageIds[arg2%imageIds.length]);
			}
		});
	}
	
}
在编写的时候遇到个错误就是:
在代码
for(int i=0;i<imageIds.length;i++){
    		Map<String, Object> listItem1=new HashMap<String, Object>();
    		listItem1.put("image", imageIds[i]);
    		listItem1.put("name", names[i]);
    		listItems.add(listItem1);
    		
    	}

中要想把ImageView和TextView同时显示在一起即:文字在图片的下面,应该正如上面的代码一样。自己当时的错误是:

for(int i=0;i<imageIds.length;i++){
    		Map<String, Object> listItem1=new HashMap<String, Object>();
    		Map<String, Object> listItem2=new HashMap<String, Object>();
    		listItem1.put("image", imageIds[i]);
    		listItem2.put("name", names[i]);
    		listItems.add(listItem1);
    		listItems.add(listItem2);
    		
    	}
对我这个java和android的初学者来说这个错误出现的对学习有很大帮助!故此记录下来。

Android常用的UI组件

近来读完《疯狂Android讲义》一书,也将其中的案例都码了一遍。很厚的一本书,就像一本字典,涵盖了大部分的android基础知识。现对里面一些比较不错的内容做出总结。本篇对常用UI组件做出总结,只做...
  • m0_37597069
  • m0_37597069
  • 2017年04月16日 16:37
  • 1305

Android应用开发———Android中的常用UI组件

1、Android中常用的的UI组件: 2、TextView文本显示组件:         TextView组件的主要功能是向用户显示文本内容。         TextView组件在功...
  • fang_yang_wa
  • fang_yang_wa
  • 2017年05月10日 13:46
  • 199

Android UI 组件开源软件 共有47款

http://www.oschina.net/project/tag/342/android-ui Android显示GIF动画 GifView GifView 是一个为了...
  • jaycee110905
  • jaycee110905
  • 2013年07月23日 16:37
  • 3338

android 使用原生UI组件

在如今的App中,已经有成千上万的原生UI部件了——其中的一些是平台的一部分,另一些可能来自于一些第三方库,而且可能你自己还收藏了很多。React Native已经封装了大部分最常见的组件,譬如Scr...
  • u012915455
  • u012915455
  • 2016年09月19日 11:17
  • 1009

React Native之原生UI组件封装---适配Android

React Native进阶之原生UI组件封装—适配Android(一)前言这篇来介绍一下封装原生UI组件封装给React Native前端进行调用,不过当前文章所讲只是用于Android部分开发,后...
  • u014484863
  • u014484863
  • 2016年06月03日 23:52
  • 2005

Android组件及UI框架大全

Android 是目前最流行的移动操作系统(还需要加之一吗?)。 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件。 本文试图将目前流...
  • boonya
  • boonya
  • 2014年08月20日 12:09
  • 49930

Android之UI学习篇:使用GridView实现九宫格的菜单

今天在devdiv论坛里看到有坛友问到九宫格的实现,我把我在项目中用的经验分享一下,九宫格用gridview实现代码。 九宫格菜单通常是全屏显示的,那么如何控制某个Activity全屏显示呢...
  • It_BeeCoder
  • It_BeeCoder
  • 2017年07月25日 11:29
  • 547

Android中常用UI组件总结

UI组件之布局管理器 A.     线性布局(LinearLayout):控制各组件横向排列,到头之后,剩下的组件将不会显示出来。常用属性       1.      android:ba...
  • spanklebobo
  • spanklebobo
  • 2016年08月15日 14:01
  • 544

Android TV开发经验总结---控件Gridview使用

前一篇我们已经讲解的基本Android TV 开发的基础技能Android TV开发经验总结---初识TV开发,接下来聊聊TV开发中所涉及到的控件运用     目前Android TV 开发的资料不是...
  • Derbe
  • Derbe
  • 2016年07月18日 16:23
  • 5562

android常用组件属性-- Gridview属性详解及例子[搜索集合]

GridView的一些特殊属性: 1.android:numColumns=”auto_fit”   //GridView的列数设置为自动 2.android:columnWi...
  • u014074418
  • u014074418
  • 2014年09月16日 18:45
  • 3767
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android的UI组件之GridView
举报原因:
原因补充:

(最多只允许输入30个字)