Android GridView宫格视图(一) 运用--BaseAdapter

GridView宫格视图实践

①  新建工程
②  res/drawable目录下添加名称为a.png---p.png的图片
③  修改main.xml布局,添加一个GridView、一个ImageView
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout     android:id="@+id/widget0"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     xmlns:android="http://schemas.android.com/apk/res/android"> <GridView     android:id="@+id/grid"     android:layout_width="fill_parent"     android:padding="30dip"     android:columnWidth="52px"     android:layout_height="210px"     android:numColumns="5">     <!-- GridView设置为五列 边距为30pid--> </GridView> <ImageView     android:id="@+id/ImageView_Big"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_x="95px"     android:layout_y="250px"> </ImageView> </AbsoluteLayout>
复制代码

④  GridView的定义与实例化
/*定义类对象*/ private GridView my_gridview; /*从xml中获取UI资源对象*/ my_gridview = (GridView) findViewById(R.id.grid);
复制代码

⑤  GridView的图像内容设置与ImageAdapter

/*新建一个自定义的ImageAdapter*/ myImageViewAdapter = new ImageAdapter(this); /*为GridView对象设置一个ImageAdapter*/ my_gridview.setAdapter(myImageViewAdapter);
复制代码
⑥  内部类 ImageAdapter,实现了BaseAdapter
private class myImageAdapter extends BaseAdapter{ @Override public int getCount() { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position,                                 View convertView, ViewGroup parent) { // TODO Auto-generated method stub return null; } }
复制代码

⑦ GridView的图片Items点击事件处理
/*为GridView添加图片Items点击事件监听器*/ my_gridview.setOnItemClickListener(this); @Override public void onItemClick(AdapterView<?> arg0,                                  View arg1, int arg2, long arg3) { // TODO Auto-generated method stub /*点击GridView中图片Items事件处理*/ }
复制代码


⑧ GridView移动后选中图片Items的事件处理
/*为GridView添加图片Items移动选中事件监听器*/ my_gridview.setOnItemSelectedListener(this); @Override public void onItemSelected(AdapterView<?> arg0,                                         View arg1, int arg2,long arg3) { // TODO Auto-generated method stub /*GridView中的图片移动焦点选中时事件处理*/ } /*未选中GridView中的图片Items事件处理*/ @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub }

-----------------------------具体代码如下--------------------------------

复制代码

⑨ 修改mainActivity.java来实现图片点击和图片移动选中的效果
package zyf.GridViewTest; /*导入要使用的包*/ import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; public class GridViewTest extends Activity implements                                       GridView.OnItemClickListener,                                          GridView.OnItemSelectedListener { /** Called when the activity is first created. */ /*定义类对象*/ private GridView my_gridview; private ImageView big_imageView; private ImageAdapter myImageViewAdapter; /*内部类,实现一个图片适配器*/ public class ImageAdapter extends BaseAdapter { /*myContext为上下文*/ private Context myContext; /*GridView用来加载图片的ImageView*/ private ImageView the_imageView; // 这是图片资源ID的数组 private Integer[] mImageIds = {                R.drawable.a, R.drawable.b,R.drawable.c, R.drawable.d,                R.drawable.e, R.drawable.f,R.drawable.g, R.drawable.h,                R.drawable.i, R.drawable.j,R.drawable.k, R.drawable.l,                R.drawable.m, R.drawable.n,R.drawable.o, R.drawable.p                 }; /*构造方法*/ public ImageAdapter(Context myContext) { // TODO Auto-generated constructor stub this.myContext = myContext; /*传入一个Context,本例中传入的是GridViewTest */ } /*返回资源ID数组长度*/ @Override public int getCount() { // TODO Auto-generated method stub return mImageIds.length; } /*得到Item*/ @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } /*获取Items的ID*/ @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; }
  //处理gridview的每个item /*获取要显示的View对象*/ @Override public View getView(int position,                                   View convertView, ViewGroup parent) { // TODO Auto-generated method stub /*创建一个ImageView*/ the_imageView = new ImageView(myContext); // 设置图像源于资源ID。 the_imageView.setImageResource(mImageIds[position]); /*使ImageView与边界适应*/ the_imageView.setAdjustViewBounds(true); /*设置背景图片的风格*/ the_imageView.setBackgroundResource(                                        android.R.drawable.picture_frame); /*返回带有多个图片ID的ImageView*/ return the_imageView; } /*自定义获取对应位置的图片ID*/ public Integer getcheckedImageIDPostion(int theindex) { return mImageIds[theindex]; } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /*设置主屏布局*/ setContentView(R.layout.main); /*从xml中获取UI资源对象*/ my_gridview = (GridView) findViewById(R.id.grid); big_imageView =                        (ImageView) findViewById(R.id.ImageView_Big); /*新建一个自定义的ImageAdapter*/ myImageViewAdapter = new ImageAdapter(this); /*为GridView对象设置一个ImageAdapter*/ my_gridview.setAdapter(myImageViewAdapter); /*为GridView添加图片Items点击事件监听器*/ my_gridview.setOnItemClickListener(this); /*为GridView添加图片Items移动选中事件监听器*/ my_gridview.setOnItemSelectedListener(this); } @Override public void onItemClick(AdapterView<?> arg0,                                 View arg1, int arg2, long arg3) { /*点击GridView中图片Items后显示一个AlterDialog提示框*/ new AlertDialog.Builder(this)    .setTitle("图片浏览")        /*获得对应的图片并显示*/        .setIcon(myImageViewAdapter.getcheckedImageIDPostion(arg2))        /*添加一个按钮*/    .setPositiveButton("返回", new OnClickListener() { @Override public void onClick(DialogInterface dialog,                                                                 int which) { } /*显示提示框*/ }).show(); } @Override public void onItemSelected(AdapterView<?> arg0,                                         View arg1, int arg2,long arg3) { // TODO Auto-generated method stub /*GridView中的图片移动焦点选中时,          *下面的大图ImageView显示相应的大图片*/ big_imageView.setImageResource(myImageViewAdapter .getcheckedImageIDPostion(arg2)); } /*未选中GridView中的图片Items事件处理*/ @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }
复制代码

⑩ 结果
图片1.png
2009-5-23 14:39 上传
下载附件 (127.64 KB)


转载于:https://www.cnblogs.com/Greenwood/archive/2011/02/28/1967438.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值