Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1136510
  • 博文数量: 103
  • 博客积分: 1897
  • 博客等级: 上尉
  • 技术积分: 1717
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-19 21:02
文章分类

全部博文(103)

文章存档

2013年(19)

2012年(84)

分类: Java

2012-05-03 21:43:55

   最近在学习android的gridView,去网上找了一些资料,今晚顺手做了一个小例子,现在先贴一下效果图先:

这是我最近再做的一个项目的其中一小部分,还没怎么完善,下面我来介绍一下gridView的一些用法:
关于gridView,android官方的定义是这样的:
GridView is a ViewGroup that displays items in a two-dimensional, scrollable grid. The grid items are automatically inserted to the layout using a ListAdapter.
大体是说gridView以一种二维的,可滚动的表格形式来展示项目。而表格里面的内容是通过ListAdapter来实现初始乎的。
GridView的继承关系如下:
java.lang.Object
   ↳android.view.View
    ↳android.view.ViewGroup
     ↳android.widget.AdapterViewandroid.widget.Adapter>
      ↳android.widget.AbsListView
       ↳android.widget.GridView
好了,下面来讲一下具体的应用:
首先要通过定义一个适配器adapter来初始化gridView里面的内容,根据官方文档里面的教程,这个类要继承一个BaseAdapter的类,这个BaseAdapter  是一个抽象类,官方定义如下
public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter
这个官方定义好的类实现了ListAdapter的接口,这正是初始化gridView所需要的。

点击(此处)折叠或打开

  1. package com.lifeassistant;

  2. import android.content.Context;
  3. import android.view.View;
  4. import android.view.ViewGroup;
  5. import android.widget.BaseAdapter;
  6. import android.widget.GridView;
  7. import android.widget.ImageView;
  8. /**
  9.  *图片适配器
  10.  */
  11. public class ImageAdapter extends BaseAdapter{
  12.     
  13.     //上下文
  14.     private Context mContext;
  15.     //设置图片的大小
  16.     private int width = 100;
  17.     private int height =100;
  18.     //设置一个星期的图片
  19.     private Integer[] mImageIds = {
  20.             R.drawable.mon,
  21.             R.drawable.tue,
  22.             R.drawable.wed,
  23.             R.drawable.thu,
  24.             R.drawable.fri,
  25.             R.drawable.sat,
  26.             R.drawable.sun
  27.     };
  28.     public ImageAdapter(Context c){
  29.         mContext = c;
  30.     }
  31.  //得到图片的数目,刚设置时会调用此函数取得图片的数目
  32.     @Override
  33.     public int getCount() {
  34.         // TODO Auto-generated method stub
  35.         return mImageIds.length;
  36.     }

  37.     @Override
  38.     public Object getItem(int position) {
  39.         // TODO Auto-generated method stub
  40.         return position;
  41.     }
  42. //图片id,默认从零开始
  43.     @Override
  44.     public long getItemId(int position) {
  45.         // TODO Auto-generated method stub
  46.         return position;
  47.     }
  48. //显示图片
  49.     @Override
  50.     public View getView(int position, View convertView, ViewGroup parent) {
  51.         // TODO Auto-generated method stub
  52.         ImageView imageView;
  53.         if(convertView == null){
  54.             imageView = new ImageView(mContext);
  55.             imageView.setLayoutParams(new GridView.LayoutParams(width,height));
  56.             imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
  57.         }else{
  58.             imageView = (ImageView)convertView;
  59.         }
  60.         imageView.setImageResource(mImageIds[position]); //设置对应的图片
  61.         return imageView;
  62.     }

  63. }
另外,还要定一个一个activity,如下:


点击(此处)折叠或打开

  1. package com.lifeassistant;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.AdapterView;
  7. import android.widget.AdapterView.OnItemClickListener;
  8. import android.widget.GridView;
  9. import android.widget.Toast;

  10. public class CourseActivity extends Activity {
  11.     /** Called when the activity is first created. */
  12.     @Override
  13.     public void onCreate(Bundle savedInstanceState) {
  14.         super.onCreate(savedInstanceState);
  15.         setContentView(R.layout.course);
  16.         GridView courseGridView = (GridView)findViewById(R.id.courseGridView);
  17.         // 设置gridView 的适配器
  18.         courseGridView.setAdapter(new ImageAdapter(this));
  19.         //事件响应函数
  20.         courseGridView.setOnItemClickListener(new OnItemClickListener(){

  21.             @Override
  22.             public void onItemClick(AdapterView<?> parent, View view,
  23.                     int position, long id) {
  24.                 // TODO Auto-generated method stub
  25.                 String mess = position+" id:"+id;
  26.             Toast.makeText(CourseActivity.this,mess, Toast.LENGTH_SHORT).show();
  27.             }
  28.             
  29.         });
  30.     }
  31. }

xml布局文件如下

    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

            android:id="@+id/courseGridView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:numColumns="auto_fit"
        android:gravity="center">
   



这样就ok了。。



阅读(2715) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~