Android开发:GridView常用技巧


GridView AdapterView 的派生类, AdapterView ViewGroup 的派生类, ViewGroup View 的派生类。

什么是 GridView ?官方的说法是:

A view that shows items in two-dimensional scrolling grid. The items in the grid come from the ListAdapter associated with this view

这句话包含以下几个意思:

+      GridView 是一个二维可滚动的网格视图

+       GridView 中的数据是有与之关联的 ListAdapter 提供的

下面就一个具体的例子来说明 GridView 的用法。

1.     创建一个项目,修改 main.xml 使之如下:

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

 

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

           android:id = "@+id/gridview"

           android:layout_width = "fill_parent"

           android:layout_height = "fill_parent"

           android:background = "#333"

           android:columnWidth = "90px"

           android:numColumns = "auto_fit"

           android:horizontalSpacing = "6px"

           android:verticalSpacing = "6px"

           android:stretchMode = "columnWidth"

           android:gravity = "center" >

           <!--

           android:columnWidth                 Set the width of columns in the grid.

           android:numColumns                Set the number of columns in the grid.

           android:stretchMode                   Control how items are stretched to fill their space.

           -->

</ GridView >

 

2.     将相关的图片拖入 res/drawable-mdpi 文件夹中:

    

 

以上各图对应的文件名分别为:

.aa.png, al.png, ar.png. au.png, cf.png, cn .png, dm .png, eu .png, fa .png, gr .png, hk .png, in .png, ma .png, pk .png, ru .png, sk .png, uk .png, us .png,

 

3.     自定义 Adapter ,使之如下:

package com.pat.gui;

 

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;

 

public class ImageAdapter extends BaseAdapter

{

         private Context ctx;

         private int[] images =

         {

                   R.drawable.aa,          // Austria

                   R.drawable.al,           // Algeria

                   R.drawable.ar,           // Argentina

                   R.drawable.au,          // Austrilia

                   R.drawable.cf,           // Swizterland

                   R.drawable.cn,          // China

                   R.drawable.dm,         // Denmark

                   R.drawable.eu,          // European Union

                   R.drawable.fa,           // France

                   R.drawable.gr,           // Greece

                   R.drawable.hk,          // Hong Kong

                   R.drawable.in,           // India

                   R.drawable.ma,         // Macau

                   R.drawable.pk,          // Pakistan

                   R.drawable.ru,           // Russia

                   R.drawable.sk,           // South Korea

                   R.drawable.uk,          // United Kingdom

                   R.drawable.us           // United States

         };

        

         public ImageAdapter(Context ctx)

         {

                   this.ctx = ctx;

         }

        

         //@Override

         public int getCount()

         {

                   return images.length;

         }

 

         //@Override

         public Object getItem(int position)

         {

                   return images[position];

         }

 

         //@Override

         public long getItemId(int position)

         {

                   return images[position];

         }

 

         //@Override

         public View getView(int position, View convertView, ViewGroup parent)

         {

                   ImageView view = (ImageView)convertView;

                   if(view == null)

                   {

                            view = new ImageView(ctx);

                   }

                  

                   view.setLayoutParams(new GridView.LayoutParams(90, 90));

                   view.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

                   view.setPadding(1, 1, 1, 1);

                   view.setImageResource(images[position]);

                  

                   return view;

         }

 

}

 

4.     修改 Activity 所对应的代码,使之如下:

package com.pat.gui;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.GridView;

import android.widget.Toast;

import android.widget.AdapterView.OnItemClickListener;

 

public class ControlGridView extends Activity

implements

OnItemClickListener

{

         private GridView gridview;

         private ImageAdapter adapter;

        

    @Override

    public void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

       

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

        adapter = new ImageAdapter(this);

        gridview.setAdapter(adapter);

        gridview.setOnItemClickListener(this);

    }

 

         //@Override

         public void onItemClick(AdapterView<?> parent, View view, int position, long id)

         {

                   Toast.makeText(this, "" + position, Toast.LENGTH_SHORT).show();

         }

}

 

输出结果:


点击中国,得到:


 

5.     如果想实现下面这样的效果:

 

  • 1
  • 2
  • 下一页

相关内容