首页 > 代码库 > 安卓开发复习笔记——GridView组件

安卓开发复习笔记——GridView组件

1、什么是GridView?

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的。

 

2、正文

GridView的用法很多,网上介绍最多的方法就是自己实现一个ImageAdapter继承BaseAdapter,再供GridView使用,太多的东西我就不再重复去写,这次记录点不一样的用法。

先看下效果图:(点击应用图标以Toast的方式显示信息)

首先先说下GridView常用的XML属性:

属性名称

描述

android:columnWidth

设置列的宽度。

android:gravity

设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多选,用“|”分开。

android:horizontalSpacing

两列之间的间距。

android:numColumns

设置列数。

android:stretchMode

缩放模式。

android:verticalSpacing

两行之间的间距。

 然后直接上代码吧,注释很全。

 

MainActivity.xml

 1 package com.example.gridviewtest; 2  3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7  8 import android.app.Activity; 9 import android.os.Bundle;10 import android.view.View;11 import android.widget.AdapterView;12 import android.widget.AdapterView.OnItemClickListener;13 import android.widget.GridView;14 import android.widget.SimpleAdapter;15 import android.widget.Toast;16 17 public class MainActivity extends Activity implements OnItemClickListener {18 19     private GridView gridView;// 声明GridView对象20     private List<Map<String,Object>> dataList;//数据源集合对象21     private SimpleAdapter simpleAdapter;22     // 图标资源23     private int images[] = { R.drawable.address_book, R.drawable.calendar,24             R.drawable.camera, R.drawable.clock, R.drawable.games_control,25             R.drawable.messenger, R.drawable.ringtone, R.drawable.settings,26             R.drawable.speech_balloon, R.drawable.weather, R.drawable.world,27             R.drawable.youtube };28     // 图标下文字资源29     private String[] texts= { "联系人", "日历", "照相机", "时钟", "游戏", "短信", "铃声",30             "设置", "语音", "天气", "浏览器", "Youtube" };31 32     @Override33     protected void onCreate(Bundle savedInstanceState) {34         super.onCreate(savedInstanceState);35         setContentView(R.layout.activity_main);36         gridView = (GridView) findViewById(R.id.gridview);// 取得对象37         gridView.setOnItemClickListener(this);38         dataList=new ArrayList<Map<String,Object>>();39         /*40          * GridView使用步骤 1、获取数据源 getData() 2、制作适配器 3、绑定适配器41          */42         43         //1、获取数据源44         dataList=getData();45         //2、制作适配器46         simpleAdapter=new SimpleAdapter(this, dataList, R.layout.gridview_item, new String[]{"image","text"}, new int[]{R.id.image,R.id.text});47         //绑定适配器48         gridView.setAdapter(simpleAdapter);49     }50 51     private List<Map<String, Object>> getData() {        52         for(int i=0;i<images.length;i++){//每个map对象对应着一组数据53             Map<String, Object> map=new HashMap<String, Object>();54             map.put("image", images[i]);55             map.put("text", texts[i]);56             dataList.add(map);        57         }58         return dataList;59     }60 61     @Override62     public void onItemClick(AdapterView<?> parent, View view, int position,63             long id) {64         Toast.makeText(this,texts[position]+"应用被选择" , Toast.LENGTH_SHORT).show();65     }66 67 }

activity_main.xml

 1 <LinearLayout 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     tools:context="com.example.gridviewtest.MainActivity"  6     android:orientation="vertical"> 7      8       <!-- 9      GridView是可滚动的网格。一般用来显示多张图片。10      android:horizontalSpacing="5dp" 两列之间的间距是5dp11      android:verticalSpacing="5dp" 两行之间的间距是5dp12      android:stretchMode="spacingWidth" 缩放与列宽大小同步13      android:numColumns="auto_fit" 本来是一行显示几个,现在改为自动分配14     -->15     <GridView 16             android:id="@+id/gridview"17             android:layout_width="wrap_content"18             android:layout_height="wrap_content"19             android:horizontalSpacing="5dp"20             android:verticalSpacing="10dp"21             android:numColumns="3"22         ></GridView>23 24   25 26 </LinearLayout>

gridview_item.xml

 1 <LinearLayout 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="com.example.gridviewtest.MainActivity" 10     android:gravity="center"11     android:orientation="vertical">12     13     <ImageView 14         android:id="@+id/image"15         android:layout_width="60dp"16         android:layout_height="60dp"17         android:layout_gravity="center"18         android:src="@drawable/ic_launcher"19         />20     21     <TextView 22         android:id="@+id/text"23         android:layout_width="wrap_content"24         android:layout_height="wrap_content"25         android:layout_gravity="center"26         android:layout_marginTop="3dp"27         />28 29 30   31 32 </LinearLayout>

AndroidManifest.xml

 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3     package="com.example.gridviewtest" 4     android:versionCode="1" 5     android:versionName="1.0" > 6  7     <uses-sdk 8         android:minSdkVersion="8" 9         android:targetSdkVersion="21" />10 11     <application12         android:allowBackup="true"13         android:icon="@drawable/ic_launcher"14         android:label="@string/app_name"15         android:theme="@android:style/Theme.Black.NoTitleBar" >16         <activity17             android:name=".MainActivity"18             android:label="@string/app_name" >19             <intent-filter>20                 <action android:name="android.intent.action.MAIN" />21 22                 <category android:name="android.intent.category.LAUNCHER" />23             </intent-filter>24         </activity>25     </application>26 27 </manifest>

素材图片这里就不给出了,大家自己随便网上搜吧,一大堆的。

 

安卓开发复习笔记——GridView组件