Tiger_Dog

Android系列教程:GridView组件的使用

新建一个HelloGridView的工程

  修改main.xml代码如下:

  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:columnWidth="90dp"

  android:numColumns="auto_fit"

  android:horizontalSpacing="10dp"

  android:verticalSpacing="10dp"

  android:stretchMode="columnWidth"

  android:gravity="center">

  < /GridView>

  < ?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:columnWidth="90dp"

  android:numColumns="auto_fit"

  android:horizontalSpacing="10dp"

  android:verticalSpacing="10dp"

  android:stretchMode="columnWidth"

  android:gravity="center">

  < /GridView>

   很简单,就是一个GridView。设置列宽为90dp,这样当我们的numColumns设置为auto_fit时,Android就会自动计算我们 手机屏幕的大小以决定每一行展示几个元素。这是很方便。android:horizontalSpacing定义列之间的间 隔,android:verticalSpacing定义行之间的间隔。android:stretchMode设置为columnWidth是意味着根 据列宽自动缩放。

  修改我们Activity HelloGridView如下:

  Java代码

  /**

  *

  * @author 飞雪无情

  * @since 2011-1-20

  */

  public class HelloGridView extends Activity {

  /** Called when the activity is first created. */

  @Override

  protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

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

  gridView.setAdapter(new ImageAdapter(this));

  //单击GridView元素的响应

  gridView.setOnItemClickListener(new OnItemClickListener() {

  @Override

  public void onItemClick(AdapterView parent, View view,

  int position, long id) {

  //弹出单击的GridView元素的位置

  Toast.makeText(HelloGridView.this,mThumbIds[position], Toast.LENGTH_SHORT).show();

  }

  });

  }

  private class ImageAdapter extends BaseAdapter{

  private Context mContext;

  public ImageAdapter(Context context) {

  this.mContext=context;

  }

  @Override

  public int getCount() {

  return mThumbIds.length;

  }

  @Override

  public Object getItem(int position) {

  return mThumbIds[position];

  }

  @Override

  public long getItemId(int position) {

  // TODO Auto-generated method stub

  return 0;

  }

  @Override

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

  //定义一个ImageView,显示在GridView里

  ImageView imageView;

  if(convertView==null){

  imageView=new ImageView(mContext);

  imageView.setLayoutParams(new GridView.LayoutParams(85, 85));

  imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

  imageView.setPadding(8, 8, 8, 8);

  }else{

  imageView = (ImageView) convertView;

  }

  imageView.setImageResource(mThumbIds[position]);

  return imageView;

  }

  }

  //展示图片

  private Integer[] mThumbIds = {

  R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5,

  R.drawable.sample_6, R.drawable.sample_7,

  R.drawable.sample_0, R.drawable.sample_1,

  R.drawable.sample_2, R.drawable.sample_3,

  R.drawable.sample_4, R.drawable.sample_5,

  R.drawable.sample_6, R.drawable.sample_7,

  R.drawable.sample_0, R.drawable.sample_1,

  R.drawable.sample_2, R.drawable.sample_3,

  R.drawable.sample_4, R.drawable.sample_5,

  R.drawable.sample_6, R.drawable.sample_7

  };

  }

  /**

  *

  * @author 飞雪无情

  * @since 2011-1-20

  */

  public class HelloGridView extends Activity {

  /** Called when the activity is first created. */

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

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

  gridView.setAdapter(new ImageAdapter(this));

  //单击GridView元素的响应

  gridView.setOnItemClickListener(new OnItemClickListener() {

  @Override

  public void onItemClick(AdapterView parent, View view,

  int position, long id) {

  //弹出单击的GridView元素的位置

  Toast.makeText(HelloGridView.this,mThumbIds[position], Toast.LENGTH_SHORT).show();

  }

  });

  }

  private class ImageAdapter extends BaseAdapter{

  private Context mContext;

  public ImageAdapter(Context context) {

  this.mContext=context;

  }

  @Override

  public int getCount() {

  return mThumbIds.length;

  }

  @Override

  public Object getItem(int position) {

  return mThumbIds[position];

  }

  @Override

  public long getItemId(int position) {// TODO Auto-generated method stub

  return 0;

  }

  @Override

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

  //定义一个ImageView,显示在GridView里

  ImageView imageView;

  if(convertView==null){

  imageView=new ImageView(mContext);

  imageView.setLayoutParams(new GridView.LayoutParams(85, 85));

  imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

  imageView.setPadding(8, 8, 8, 8);

  }else{

  imageView = (ImageView) convertView;

  }

  imageView.setImageResource(mThumbIds[position]);

  return imageView;

  }

  }

  //展示图片

  private Integer[] mThumbIds = {

  R.drawable.sample_2, R.drawable.sample_3,

  R.drawable.sample_4, R.drawable.sample_5,

  R.drawable.sample_6, R.drawable.sample_7,

  R.drawable.sample_0, R.drawable.sample_1,

  R.drawable.sample_2, R.drawable.sample_3,

  R.drawable.sample_4, R.drawable.sample_5,

  R.drawable.sample_6, R.drawable.sample_7,

  R.drawable.sample_0, R.drawable.sample_1,

  R.drawable.sample_2, R.drawable.sample_3,

  R.drawable.sample_4, R.drawable.sample_5,

  R.drawable.sample_6, R.drawable.sample_7

  };

  }

  这里我们也是采用的自定义Adapter,可以上一节的自定义Adapter讲解。展示了一些图片,然后点击一个图片的时候会显示这个图片所在的位置。

  运行程序,效果图如下:

(图)Android系列教程:GridView组件的使用Android系列教程:GridView组件的使用

posted on 2011-03-03 17:04  Tiger_Dog  阅读(569)  评论(0)    收藏  举报

导航