【Android之GridView入门Demo】



 

一、java源码

package cn.com.test;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.GridView;

import android.widget.ListAdapter;

import android.widget.SimpleAdapter;

import android.widget.Toast;

public class GridViewTest extends Activity {

// gridView控件

    private GridView gridView;

    // 假设显示9个item,这对应着9个item的显示名称

    private String[] defItemTexts = new String[] { "搜索", "文件管理", "下载管理", "全屏",

              "网址", "加入书签","删除书签", "分享页面", "关闭" };

    // 这对应着9个item的图片,这里我偷懒了,统一用了系统自带的图片

    private int[] defItemImages = new int[] { R.drawable.q, R.drawable.q, R.drawable.q,

            R.drawable.q, R.drawable.q, R.drawable.q, R.drawable.q , R.drawable.q ,

            R.drawable.q };

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        // 初始化参数

        gridView = (GridView) findViewById(R.id.gridView);

        // 设置数据匹配器

        gridView.setAdapter(getAdapter());

        //设置水平间隔

        gridView.setHorizontalSpacing(15);

      //设置垂直间隔

        gridView.setVerticalSpacing(20);

        // 只是显示是没用用的,这里我们在添加单击item时的监听事件

        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int index, long arg3) {

                Toast.makeText(GridViewTest.this, index + "", 2).show();

            }

        });

    }

    /**

     * DOC 获取数据匹配器

     */

    private ListAdapter getAdapter() {

        // 该list用来存放每一个item对应的文字和图片

    // List[map1,map2]其中每个map包含两个key为itemText、itemImage的数据

        List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();

        for (int i = 0; i < defItemTexts.length; i++) {

            HashMap<String, Object> map = new HashMap<String, Object>();

            map.put("itemText", defItemTexts[i]);

            map.put("itemImage", defItemImages[i]);

            list.add(map);

        }

       

        // 该构造函数,这里说明一下

        // 第一个参数为new SimpleAdapter(Context, 上面的list,

        //    每一个项对应的itemView,itemView里显示的所有信息(要和list里的map里的名称一样) ,

        // itemView里控件id);

        SimpleAdapter simpleAdapter = new SimpleAdapter(this, list, R.layout.item,

                new String[] { "itemText", "itemImage" },

                new int[] { R.id.imageText, R.id.imageView });

        return simpleAdapter;

    }

}

二、XML 定义如下:

1)main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

    <!--  

<TextView  

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello"

    />-->

     <GridView

        android:id="@+id/gridView"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:numColumns="3"

        android:gravity="center" />

</LinearLayout>

2)item.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

    <ImageView

        android:id="@+id/imageView"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />

    <TextView

        android:id="@+id/imageText"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />

</LinearLayout>

三、效果图如下:



 

猜你喜欢

转载自gaojingsong.iteye.com/blog/2357924