安卓入门: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中的图片移动焦点选中时事件处理*/
} 
@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 */
}
@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;
} 
@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;
} 
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));
} 
*/
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}

下面是DEMO下载


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值