Android GridView的使用方法

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

 

 

首先写一个类继承BaseAdapter

[java] view plaincopy

  1. public class ImageList extends BaseAdapter {  

  2.       

  3.         public Bitmap[] image;  

  4.         Activity activity;  

  5.           

  6.         // construct  

  7.         public ImageList(Activity a) {  

  8.             activity = a;  

  9.         }  

  10.         @Override  

  11.         public int getCount() {  

  12.             // TODO Auto-generated method stub  

  13.             return image.length;  

  14.         }  

  15.         @Override  

  16.         public Object getItem(int position) {  

  17.             // TODO Auto-generated method stub  

  18.             return image[position];  

  19.         }  

  20.         @Override  

  21.         public long getItemId(int position) {  

  22.             // TODO Auto-generated method stub  

  23.             return position;  

  24.         }  

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

  26.             // TODO Auto-generated method stub  

  27.             ImageView imageView;  

  28.             if (convertView == null) {  

  29.                 imageView = new ImageView(activity);  

  30.                 imageView.setLayoutParams(new GridView.LayoutParams(5050));// 设置ImageView宽高  

  31.                 imageView.setAdjustViewBounds(false);  

  32.                 imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);  

  33.                   

  34.             } else {  

  35.                 imageView = (ImageView) convertView;  

  36.             }  

  37.             imageView.setImageBitmap(image[position]);  

  38.               

  39.             return imageView;  

  40.         }  

  41.         public static Bitmap drawableToBitmap(Drawable drawable) {    

  42.                 

  43.             Bitmap bitmap = Bitmap    

  44.                             .createBitmap(    

  45.                                             drawable.getIntrinsicWidth(),    

  46.                                             drawable.getIntrinsicHeight(),    

  47.                                             drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888    

  48.                                                             : Bitmap.Config.RGB_565);    

  49.             Canvas canvas = new Canvas(bitmap);    

  50.             drawable.setBounds(00, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());    

  51.             drawable.draw(canvas);    

  52.             return bitmap;    

  53.     }    

  54.     }  

 

 

 

然后在主程序里

 

 

 

 

 

[c-sharp] view plaincopy

  1. final GridView gv = (GridView) findViewById(R.id.grid);  

  2.                 ImageList adapter = new ImageList(available.this);  

  3.                 Resources res=getResources();    

  4.                 Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.logo);    

  5.                 adapter.image=new Bitmap[20];  

  6.                 for(int i=0;i<=19;i++)  

  7.                 {  

  8.                     adapter.image[i]=bmp;  

  9.                 }  

  10. gv.setAdapter(adapter);  

  11.                 gv.setOnItemClickListener(new OnItemClickListener() {  

  12.                     @Override  

  13.                     public void onItemClick(AdapterView<?> arg0, View arg1,  

  14.                             int arg2, long arg3) {  

  15.                         // TODO Auto-generated method stub  

  16.                         Log.i("phb", arg2 + "");  

  17.                         Log.i("phbsel",gv.isFocused()+"");  

  18.                         Intent i=new Intent(available.this, com.mobile.links.shop.mycx.shopcart.class);  

  19.                         startActivity(i);  

  20.                     }  

  21.                 });  

  22.                gv.setOnItemSelectedListener(new OnItemSelectedListener(){  

  23.                 @Override  

  24.                 public void onItemSelected(AdapterView<?> arg0, View arg1,  

  25.                         int arg2, long arg3) {  

  26.                     // TODO Auto-generated method stub  

  27.                     Log.i("selected",arg2+"");  

  28.                     tv.setText(arg2+":detail");  

  29.                 }  

  30.                 @Override  

  31.                 public void onNothingSelected(AdapterView<?> arg0) {  

  32.                     // TODO Auto-generated method stub  

  33.                       

  34.                 }  

  35.                      

  36.                });  

  37.                   

 

其中onClick函数是判断被点击

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

 

 

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

 

构建gridview的xml代码

 

[c-sharp] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout  

  3. android:id="@+id/relativelayout"  

  4. android:layout_width="fill_parent"  

  5. android:layout_height="fill_parent"  

  6. xmlns:android="http://schemas.android.com/apk/res/android"  

  7. android:orientation="vertical"  

  8. >  

  9. <GridView android:id="@+id/availgrid"   

  10.   android:layout_width="fill_parent"   

  11.   android:layout_height="wrap_content"   

  12.   android:numColumns="4"   

  13.   android:verticalSpacing="30dp"   

  14.   android:layout_centerHorizontal = "true"  

  15.     

  16.   />   

  17.    

  18.    

  19. </LinearLayout>  


你可能感兴趣的:(android)