最近在学习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的继承关系如下:
好了,下面来讲一下具体的应用:
首先要通过定义一个适配器adapter来初始化gridView里面的内容,根据官方文档里面的教程,这个类要继承一个BaseAdapter的类,这个BaseAdapter 是一个抽象类,官方定义如下
public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter
这个官方定义好的类实现了ListAdapter的接口,这正是初始化gridView所需要的。
- package com.lifeassistant;
- import android.content.Context;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.GridView;
- import android.widget.ImageView;
- /**
- *图片适配器
- */
- public class ImageAdapter extends BaseAdapter{
-
- //上下文
- private Context mContext;
- //设置图片的大小
- private int width = 100;
- private int height =100;
- //设置一个星期的图片
- private Integer[] mImageIds = {
- R.drawable.mon,
- R.drawable.tue,
- R.drawable.wed,
- R.drawable.thu,
- R.drawable.fri,
- R.drawable.sat,
- R.drawable.sun
- };
- public ImageAdapter(Context c){
- mContext = c;
- }
- //得到图片的数目,刚设置时会调用此函数取得图片的数目
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return mImageIds.length;
- }
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- //图片id,默认从零开始
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- //显示图片
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- ImageView imageView;
- if(convertView == null){
- imageView = new ImageView(mContext);
- imageView.setLayoutParams(new GridView.LayoutParams(width,height));
- imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
- }else{
- imageView = (ImageView)convertView;
- }
- imageView.setImageResource(mImageIds[position]); //设置对应的图片
- return imageView;
- }
- }
另外,还要定一个一个activity,如下:
- package com.lifeassistant;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.GridView;
- import android.widget.Toast;
- public class CourseActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.course);
- GridView courseGridView = (GridView)findViewById(R.id.courseGridView);
- // 设置gridView 的适配器
- courseGridView.setAdapter(new ImageAdapter(this));
- //事件响应函数
- courseGridView.setOnItemClickListener(new OnItemClickListener(){
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- // TODO Auto-generated method stub
- String mess = position+" id:"+id;
- Toast.makeText(CourseActivity.this,mess, Toast.LENGTH_SHORT).show();
- }
-
- });
- }
- }
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了。。
阅读(2756) | 评论(0) | 转发(0) |