Android GridView的使用

本文介绍如何使用 Android 的 GridView 控件来展示一系列图片,并提供了一个具体的实现示例,包括自定义 BaseAdapter 类来填充 GridView 和响应点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android的GridView控件用于把一系列的空间组织成一个二维的网格显示出来 应用的比较多的就是组合图片显示 下面我就详细讲一个例子

首先写一个类继承BaseAdapter

public class ImageList extends BaseAdapter { public Bitmap[] image; Activity activity; // construct public ImageList(Activity a) { activity = a; } @Override public int getCount() { // TODO Auto-generated method stub return image.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return image[position]; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ImageView imageView; if (convertView == null) { imageView = new ImageView(activity); imageView.setLayoutParams(new GridView.LayoutParams(50, 50));// 设置ImageView宽高 imageView.setAdjustViewBounds(false); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); } else { imageView = (ImageView) convertView; } imageView.setImageBitmap(image[position]); return imageView; } public static Bitmap drawableToBitmap(Drawable drawable) { Bitmap bitmap = Bitmap .createBitmap( drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(canvas); return bitmap; } }

然后在主程序里

final GridView gv = (GridView) findViewById(R.id.grid); ImageList adapter = new ImageList(available.this); Resources res=getResources(); Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.logo); adapter.image=new Bitmap[20]; for(int i=0;i<=19;i++) { adapter.image[i]=bmp; } gv.setAdapter(adapter); gv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Log.i("phb", arg2 + ""); Log.i("phbsel",gv.isFocused()+""); Intent i=new Intent(available.this, com.mobile.links.shop.mycx.shopcart.class); startActivity(i); } }); gv.setOnItemSelectedListener(new OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Log.i("selected",arg2+""); tv.setText(arg2+":detail"); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } });

其中onClick函数是判断被点击

而onSelect函数是判断被选中 也就是获得焦点的imageview

这样我们就可以基于gridview来做一些应用了。

构建gridview的xml代码

<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/relativelayout" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" > <GridView android:id="@+id/availgrid" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="4" android:verticalSpacing="30dp" android:layout_centerHorizontal = "true" /> </LinearLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值