Android学习笔记(十一)GridView

一个在平面上可显示多个条目的可滚动的视图组件,该组件中的条目通过一个ListAdapter和该组件进行关联。比如android手机中显示的应用:


XML属性

属性名称

描述

android:columnWidth

设置列的宽度。关联的方法为:setColumnWidth(int)

android:gravity

设置此组件中的内容在组件中的位置。可选的值有:topbottomleftrightcenter_verticalfill_verticalcenter_horizontalfill_horizontalcenterfillclip_vertical 可以多选,用“|”分开。关联方法:setGravity (int gravity)

android:horizontalSpacing        

两列之间的间距。关联方法:setHorizontalSpacing(int)

android:numColumns        

列数。关联方法:setNumColumns(int)

android:stretchMode       

缩放模式。关联方法:setStretchMode(int)

android:verticalSpacing       

两行之间的间距。关联方法:setVerticalSpacing(int)

下面我们通过一个图片展示的例子
布局文件(gridview_main.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:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
/>
列宽为90dp;列数为auto_fit自适应列数;纵向间隔10dp;横向间隔10dp;缩放模式按列宽缩放。
源码:
public class MainActivity extends Activity {
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.gridview_main);
     GridView gridview = (GridView) findViewById(R.id.gridview);
     gridview.setAdapter(new ImageAdapter(this));
     gridview.setOnItemClickListener(new OnItemClickListener() {
      @Override
         public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
             Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();
         }
     });
 }
 
 public class ImageAdapter extends BaseAdapter {
     private Context mContext;
     public ImageAdapter(Context c) {
         mContext = c;
     }
     @Override
     public int getCount() {
         return mThumbIds.length;
     }
     @Override
     public Object getItem(int position) {
         return null;
     }
     @Override
     public long getItemId(int position) {
         return 0;
     }
     // create a new ImageView for each item referenced by the Adapter
     @Override
     public View getView(int position, View convertView, ViewGroup parent) {
         ImageView imageView;
         if (convertView == null) { // if it's not recycled, initialize some attributes
             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;
     }
     // references to our images
     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
     };
 }
}
在源码中,我们监听了GridView的OnItemClick事件,在点击时,通过Toast显示出当前图片的索引号。
这里我们也自定义了GridView的Adapter方法,使得在获取view对象时能获取到ImageView对象。
运行效果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值